Java中的一些关键字:static,final,和abstract,interface,以及访问修饰符说明
1、关键字可以修饰的说明:
| 关键字 | 属性(是否可修饰) | 方法(是否可修饰) | 类(是否可修饰) |
|---|---|---|---|
| static | 是 | 是 | 是 |
| final | 是 | 是 | 是 |
| abstract | 否 | 是 | 是 |
2、关键字的意义:
| 关键字 | 意义 | 具体特性说明 | 被继承的话,会有什么后果? |
|---|---|---|---|
| static | 表示属于该类。 | 1. 修饰变量:属于该类 2. 修饰方法:子类可覆盖为static,但不可覆盖为非static。 3. 修饰类:属于该类 |
见下面详细的补充说明 |
| final | 表示一旦赋值不能改变。 | 1. 修饰变量:一旦赋值不能改变; 2. 修饰方法:不能被其子类覆盖; 3. 修饰类:不能被继承; |
不会有继承的问题,因为其代表不可变。 |
| abstract | 抽象,表示只是定义。 | 1. 修饰变量:不可以 2. 修饰方法:抽象方法没有实现,只能被子类继承并实现 3. 修饰类:抽象类不能生成对象实例,只能被子类继承并实例化子类。。 |
完全为了继承而生。 |
| interface | abstract 的特例 | 1.8之前: - 变量默认是 public static final 类型; - 方法默认是 public abstract 类型; 1.8 之后: - 方法:可定义一个或多个静态(static)方法(就是一static方法而已,只是定义改变了) - 方法:可用 default 修饰符定义(就是一普通方法而已,只是定义改变了) |
?后续补充 |
注意:
注:不能放在一起的修饰符:final,private,static,因为 abstract 修饰的方法必须在子类中实现(覆盖),才能以多态方式调用,而以上修饰符在修饰方法时期子类都覆盖不了这个方法。
final 是不可以覆盖,private 不能够继承到子类也就不能覆盖,static 虽然可以被覆盖,但调用时会调用编译时类型的方法,因为调用的是父类的方法,而父类的方法又是抽象的方法,又不能够调用,所以上的修饰符不能放在一起。
3、static的继承和覆盖说明:
注:下面只是测试,实际不建议通过实例对象访问静态变量。编译期会提示不建议,但实际可执行。
| 被继承后:父为类A,子为类B | 父(类A)属性(na)(static) | 父(类A)方法(static) |
|---|---|---|
| 子(类B)覆盖(static) | A.na / a.na表示:父类中的变量; B.na / b.na表示:子类中的变量; |
如下图 |
| 子(类B)覆盖(非static) | A.na / a.na表示:父类中的变量; B.na:编译错误; b.na:B 中的普通成员变量 |
如下图 |
| 子(类B)不覆盖 | A.na / a.na / B.na / b.na 代表的是同一个变量 |
上面没有考虑另一种情况:子类对象赋值给父类对象的情况。此时:输出的还是父类中的内容(方法和变量都是如此)。
方法覆盖的测试如下图:

4、4 种访问修饰符:public、protected、default、private

5、参考:
- Java 中继承之后同名静态变量的问题分析 - 做一个快乐的人 - CSDN 博客
- Java 中 4 种访问修饰符 public/protected/default (friendly)/private - mingjie1212 的博客 - CSDN 博客
- Java 基础- final、static 和 abstract 区别和使用 - 余额不足 - CSDN 博客
- Java 8 特性 ——interface 中的 static 方法和 default 方法 - 钝悟需要时间的打磨,顿悟需要时间的积累 - CSDN 博客
- Java 8 新特性:接口的静态方法和默认方法 - Promise Sun special column - CSDN 博客
注:说的最好的。
Java中的一些关键字:static,final,和abstract,interface,以及访问修饰符说明的更多相关文章
- Java_关键字、匿名对象、内部类、访问修饰符、代码块
final关键字 概述: 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后, ...
- [JAVA关键字] static & final
JAVA十分常见的关键字static & final 总的来说final表示常量,即不可更改的:而static表示静态,即全局的 1. final 类:不能被继承 2. final 方法:能被 ...
- java中的访问修饰符详解
主要讲述一下java中protected的修饰控制范围. 在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类.开发类.定义类的过程.类里面可 ...
- java:包、继承,访问修饰符
包 包(package) 用于管理程序中的类,主要用于解决类的同名问题.包可以看出目录. 包的作用 [1] 防止命名冲突. [2] 允许类组成一个单元(模块),便于管理和维护 [3] 更好的保护类.属 ...
- c#中的访问修饰符Protected,privet ,public, internal,和internal protected
Protected,privet ,public, internal,和internal protected的区别 Private修饰的,只能值类内部使用,外部不可以使用,子类不能直接访问,但可以通过 ...
- 深入理解Java中的volatile关键字
在再有人问你Java内存模型是什么,就把这篇文章发给他中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized ...
- java中“53”个关键字(含2个保留字)
1.java的关键字(keyword)有多少个? 51+2个保留字=53个关键字(java的关键字都是小写的!!) 2.java的保留字(reserve word)有多少个?问题:分别是什么? 2个保 ...
- Java中的关键字有哪些?「Java中53个关键字的意义及使用方法」
Java中的关键字有哪些? 1)48个关键字:abstract.assert.boolean.break.byte.case.catch.char.class.continue.default.do. ...
- 关于Java中的transient关键字
Java中的transient关键字是在序列化时候用的,如果用transient修饰变量,那么该变量不会被序列化. 下面的例子中创建了一个Student类,有三个成员变量:id,name,age.ag ...
随机推荐
- python函数入参和返回值
以下内容参考自runoob网站,以总结python函数知识点,巩固基础知识,特此鸣谢! 原文地址:http://www.runoob.com/python3/python3-function.html ...
- win10笔记本连接wifi出现:您的计算机配置似乎是正确的,但该配置或资源(DNS服务器)检测到有响应
问题上图: 一直以来连接网线使用,很少使用WiFi了,在网线不好使的时候使用wifi发现并不怎么好用,甚至上不了网页,但是那时候也不怎么在意,不过一会网线就好使了所以也没处理,直到今天,因为接下来好多 ...
- 谷歌浏览器不兼容的一些Js
这篇博文主要记录本人在实际应用中碰到的谷歌浏览器与一些Js不兼容的问题,随着时间的推移,这篇博文的内容可能越来越多,也可能一点也没有(我想那时候谷歌肯定是相当牛逼的). 1.谷歌浏览器不兼容docum ...
- loaction.reload(false)和location.reload(true)的区别
loaction.reload(false)和location.reload(true)有差别啊,一个是先判断页面有没修改,有的话就从服务器下载页面,没有就直接从缓存里拿(这个会提升响应性能)而把该方 ...
- [Luogu] 贪婪大陆
https://www.luogu.org/problemnew/show/P2184 区间修改时只需修改区间端点的numl或numr值 区间查询x-y只需用1-y的numr - 1-(x - 1)的 ...
- 【概率论】4-3:方差(Variance)
title: [概率论]4-3:方差(Variance) categories: - Mathematic - Probability keywords: - Variance - Standard ...
- C语言学习笔记8-函数
C语言学习笔记8-函数 ...待编辑 1.汇编看函数调用过程 2.函数调用过程图示:学好C这个是关键,要懂得原理 标准调用(_cdecl) 参数由右往左入栈,调用者平衡栈(即入多少参数后参数调用玩后 ...
- sqlserver 存储过程的新建与执行
if Exists(select * from sysobjects where NAME = 'insert_custominfo' and type='P') drop procedure ins ...
- 一台服务器配置多个mysql实例
在公司资源紧张的情况下,需要在一台服务器上部署多个数据库实例,现在就来实战一下该情况. 需要启动两个不同的端口,分别是3306和3307 [root@node1 ~]# mkdir /u01/mysq ...
- HDU 1069 Monkey and Banana ——(DP)
简单DP. 题意:给出若干种长方体,如果摆放时一个长方体的长和宽小于另一个的长宽,那么它可以放在另一个的上面,问最高能放多少高度.每种长方体的个数都是无限的. 做法:因为每种个数都是无限,那么每种按照 ...