Java中多层继承中的方法重写
来源:互联网 发布:steam一直无法连接网络 编辑:程序博客网 时间:2024/05/16 08:27
今天突然看到了一个两层继承的类,他重写了父类的一个方法,而父类的中的方法又是从爷爷类中重写下来的,顿时蒙圈了。于是自己写了个最简单的例子试验了一下,做个记录。
原理很简单ClassA中有一个方法onCreate(),ClassB继承ClassA,ClassC继承ClassB,并且都重写了这个方法,执行ClassC中的onCreate(),看看输出什么就是了。
public class ClassA { protected void onCreate(){ System.out.println("It's ClassA's sysout"); }}
public class ClassB extends ClassA { @Override protected void onCreate() { System.out.println("It's ClassB's sysout"); //super.onCreate(); }}
public class ClassC extends ClassB { @Override protected void onCreate() { System.out.println("It's ClassC's sysout"); super.onCreate(); }}
之后增加一个Main类
public class Main { public static void main(String[] args) { ClassC c = new ClassC(); c.onCreate(); }}
第一遍执行的时候注释了ClassB中的super.OnCreate();执行结果为:
It's ClassC's sysoutIt's ClassB's sysout
可以看到只执行了 直接父类 ClassB中的onCreate()方法,并没有执行ClassA中的方法。
第二遍执行的时候放开ClassB中的注释,执行结果为:
It's ClassC's sysoutIt's ClassB's sysoutIt's ClassA's sysout
执行了ClassA中的OnCreate();
另外之前有个概念一直不清晰,子类重写父类方法时,访问级别可以扩大但不能缩小。比如父类是protected,子类可以写成public。
访问级别:
方法修饰符为默认(friendly)时,同一个包下的子类可以重写父类方法,其他包下的子类不能重写父类方法。
阅读全文
0 0
- Java中多层继承中的方法重写
- java 继承中的方法重写
- java中的继承,继承中方法的重写,继承的初始化顺序,final关键字,super关键字
- java中的继承和方法的重写
- java 继承中的重写父类方法
- 继承中的方法重写
- 继承中的方法重写
- js继承中的方法重写
- JAVA中的继承和重写
- Java:关于继承中的重写
- java学习日记——继承中方法的重写
- java中的方法重写
- JAVA 方法重载,方法重写,继承
- java语言:方法重载&方法重写&继承
- 重写和继承关系中的构造方法
- 继承中的方法重写的注意事项
- java 继承中的重写、重载、多态
- Java中的继承,重写与遮蔽
- 括号序列的最长合法子段
- java基础增强1
- 如何强制修改mysql的root密码
- git在sourcetree的使用
- 《C++ Concurrency in Action》笔记8 死锁(2)避免死锁
- Java中多层继承中的方法重写
- Fuchsia OS中的RPC机制-FIDL
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin(矩阵快速幂)
- 详解一个自己原创的正则匹配IP的表达式
- SSH与SSM学习之hibernate07——Transaction
- Mybatis 缓存
- IO-NIO-NIO2
- 1003. 射击游戏2(出栈次序问题)
- BZOJ 3065: 带插入区间K小值 替罪羊树套权值线段树 详解