private修饰的成员方法默认是final型的?
来源:互联网 发布:爱思苹果助手mac版 编辑:程序博客网 时间:2024/05/29 05:56
private修饰的成员方法默认是final型的?
- 用fianl声明的成员方法是最终方法,最终方法不能被子类覆盖(重写)
从表面上看这个命题是错误的,private访问修饰符修饰的成员方法怎么会跟final型方法有关系呢?但从最终方法的定义可以看出,不能被子类覆盖的成员方法就是最终方法,而private修饰的成员方法就不能被子类覆盖,证明如下:
//证明private修饰的成员方法不能被子类覆盖class Father{ int m = 0; private void set() { m += 1; } public Father() { set(); }}public class Son extends Father{ private void set() { m += 3; } public static void main(String[] args) { Father f = new Son(); System.out.println(f.m); }}
输出:3
分析:
如果private修饰的set()方法被子类重写了,当执行到 Father f = new Son(); 语句,先执行Father类的构造方法,而构造方法的set()方法会调用子类的set()方法(多态的一种表现),输出结果为:1
而实际输出的结果为:3,因此private修饰的成员方法没有被子类覆盖,也就是说private修饰的成员方法默认是final型的。
- 在class文件中,有专门描述方法的方法表,方法表第一项就是访问标志access_flags。其中标志值为0x0001的 ACC_PRIVATE代表方法为private;标志值为0x0002的 ACC_PUBLIC代表方法为方法为final,可以通过判断access_flags的值判断方法有哪些访问标志。
public class Test { private void test(){} private final void test2(){}}
通过jclasslib bytecode viewer看出,如下图:
分析:
两个方法一个是只有private修饰,另一个是有private和final 修饰,如果private修饰的成员方法默认是final型的,那两个方法的access_flags值应该一样的,可结果并非如此,由此可以说明private修饰的成员方法默认是final型的是错误的。
阅读全文
0 0
- private修饰的成员方法默认是final型的?
- 通过反射修改 被 private final static修饰的成员
- private和final修饰方法
- java final修饰成员变量赋值的二种方法
- Interface成员的默认修饰
- final 修饰的成员变量无默认值!
- final修饰的成员变量初始化时机
- c#中类的默认访问修饰符,是private还是internal
- MonoDevelop开发笔记,c#中类的默认访问修饰符,是private还是internal
- private final static ×× 和private static final xx 两者修饰变量的区别
- 谈一谈我眼中的常见修饰符(private,final,static)
- JAVA的继承细节(关于private修饰符,方法与其调用的成员属性与成员方法)
- private与static的方法是不是默认为final的测试
- java修饰符public ,private ,protected 及默认的区别
- Java修饰符public,private,protected及默认的区别
- Java修饰符public,private,protected及默认的区别
- Java修饰符public,private,protected及默认的区别
- Java修饰符public,private,protected及默认的区别
- JDK动态代理实现原理
- 视频录制与播放 资源汇总
- SpringMVC传参日期格式以及js无效的问题
- jQuery的属性与样式之增加样式.addClass()
- hdu2680—Choose the best route(spfa)
- private修饰的成员方法默认是final型的?
- [linux]统计目录下文件、文件夹个数
- JavaScript
- OGRE 固定相机/观察者视角方位的方法
- [Android]依赖了包含aar包的库后出现Failed to resolve库aar包问题的解决办法
- 计算机网络自顶向下方法学习笔记
- SIFT特征提取分析(一)
- 图像分割算法——Graph Cuts
- bzoj 3156 防御准备