子类重写父类方法后的调用规则
来源:互联网 发布:网络模式怎么设置 编辑:程序博客网 时间:2024/05/17 01:02
例题:
A.null
B.sub
C.base
答案:A
为了能更好的分析代码运行过程, 做原有代码做一些变动如下:
输出结果:
再将main方法做如下变动:
输出结果:
综上所述, 此时运行的是子类Sub的callName() 方法,
new Sub();在创造派生类的过程中首先创建基类对象,然后才能创建派生类。
创建基类即默认调用Base()方法,在方法中调用callName()方法,由于派生类中存在此方法,则被调用的callName()方法是派生类中的方法,此时派生类还未构造,所以变量baseName的值为null
先成员变量再构造方法,先父类再子类
多态表现:有同名方法执行子类的
执行 Base b = new Sub();时,由于多态 b编译时表现为Base类特性,运行时表现为Sub类特性,
Base b = new Sub();不管是哪种状态都会调用Base构造器执行 callName()方法;
执行方法时,由于多态表现为子类特性,所以会先在子类是否有 callName();
而此时子类尚未初始化(执行完父类构造器后才会开始执行子类),如果有 就 执行(此时, 因为还没有调用子类构造函数, 所以子类的 baseName 输出为 null),没有再去父类寻找。
阅读全文
0 0
- 例题:子类重写父类方法后的调用规则
- 子类重写父类方法后的调用规则
- 子类重写父类的方法需要遵循以下规则:
- Java__子类中调用父类重写的方法。
- Java 子类未重写的方法调用父类还是子类的问题
- 子类重写父类的虚函数后需要调用父类的虚函数
- 【Java笔记】继承父类的方法可以调用子类的方法(子类必须在重写相应方法)
- java 子类重写父类的方法
- java 子类重写父类的方法
- java 子类重写父类的方法
- 子类重写父类的方法注意事项
- java 父构造器中调用子类重写的方法
- 为什么子类在重写父类的方法后,会替代原有方法?
- java方法重写的时候,一个调用父类还是子类方法的问题
- 子类重写父类的方法,用super调用父类中的原方法
- 子类与父类之间的方法重载、隐藏、重写与虚方法调用
- 子类继承父类,重写父类方法,运用多态时调用重写的方法时调用子类的还是调用父类的?
- java 通过子类怎么调用父类已经被重写的方法
- memory manage 方法二
- FTPrep, 60 Permutation Sequence, TODO
- sql之left join、right join、inner join的区别
- 四、Jenkins系列_配置邮件服务及简单Demo
- svm-loss 关于权重矩阵W的导数(cs231n Assignment 1)
- 子类重写父类方法后的调用规则
- 常用jar包作用
- FTPrep, 61 Rotate List
- 分享下学习Kotlin的历程-访问作用域/类修饰词/继承
- 后知后觉
- iOS学习笔记-140.RunLoop08——Runloop应用之常驻线程
- 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付
- ITIL 服务可用性管理流程关键知识
- FTPrep, 62 Unique Paths