Java调用被子类重写的方法
Java调用被子类重写的方法
- 在访问权限允许的情况下,子类可以调用父类的方法,这是因为子类继承父类就会获得父类的定义的成员不变量和方法;但父类却不能调用子类的方法,因为父类无法知道会被什么子类所继承,它的子类会增加哪些方法。
- 有一种情况例外,当父类的方法被子类重写后,父类表面上调用自己的类里的方法,但随着方法的动态调用,实际上调用了子类重写后的方法。
如下:
class Base {private String a;public Base() {a = getA();}public String getA() {return "Base";}@Overridepublic String toString() {return a;}}public class Test extends Base{String name;int age;public Test(String name, int age) {this.name = name;this.age = age;}public String getA() {return "Test [name=" + name + ", age=" + age + "]";}public static void main(String[] args) {System.out.println(new Test("小明", 20));}}
输出:
Test [name=null, age=0]
解析:
- 我们对这个执行过程进行一下分析,首先从mian方法开始,当通过new关键字创建以子类Test的实例对象时,在构造方法里对其进行初始化时,首先默认会调用父类的无参构造方法,但在父类的构造方法里却调用了一个父类方法,但同时在子类里也被重写了,所以就会动态调用子类重写后的方法,但这时,子类的成员变量还未被初始化,所以就会输出该类型的默认值。
Thanks
Java调用被子类重写的方法相关推荐
- java父类调用被子类重写的方法
[转][原文] 1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解jav ...
- Java中关于子类重写父类方法的坑
什么是方法重写? 设类B继承自类A.在A中定义方法了method_A,在B中定义方法了method_B.若method_B的签名等价于method_A的签名,则称B重写了A的method_A方法. 方 ...
- java多态实现示例,以及子类重写父类方法调用父类方法
多态 多态存在的三个必要条件:继承,重写,父类引用指向子类对象, 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则error:如果有,调用子类的同名方法. example: pack ...
- 子类重写父类方法,调用时会调用子类重写之后的方法
1, 以下代码执行的结果显示是多少( )? public class Demo {class Super{ int flag=1;Super(){test();}void test(){System. ...
- 关于子类重写父类方法的问题
关于访问修饰符对重写父类方法的影响 结论 代码样例 子类 结论 子类重写父类的方法: 1.父类中私有方法不能被重写.因为父类私有方法子类可理解为被子类继承,但是不被子类可见,不可访问,当然就无法重写了 ...
- 【Java基础】通过子类调用父类被重写的方法
多态 使用super关键字可以通过子类调用父类被重写方法. public class Main {public static void main(String[] args) {Children c ...
- 特定构造方法 如何让子类重写某些方法时提醒调用super
Designated initializer : 特定构造方法(方法声明后面带有NS_DESIGNATED_INITIALIZER)注意:子类如果重写了父类的特定构造方法, 那么必须使用super调用 ...
- java继承 子类重写父类方法
package com.addd;//多态 public class Sld {private String name = "zhangsan";public Sld() {aaa ...
- java——API—— Object类——重写equals方法
重写Object类的equals方法 如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法. Object类的equals方法,默认比较的是两个 ...
最新文章
- shell脚本中的case语句使用要点
- MyBatis源码骨架分析
- 学习 Message(4): 通过 Application.OnMessage 或 TApplicationEvents 响应消息
- 河北单招计算机英语,2019年河北高职单招英语联考试题
- 京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践
- MySQL SELECT:数据表查询语句
- 计算机视觉农作物检测,基于计算机视觉的农作物病害检测系统的研究
- 学了python能干啥举例-第9p,Python是什么?学了Python能干什么?
- Codeforces Round #379 (Div. 2) E. Anton and Tree —— 缩点 + 树上最长路
- 串行加法器和并行加法器_N位并行加法器(4位二进制加法器和减法器)
- 电阻触摸屏和电容触摸屏你更喜欢哪一个?
- matlab图片数据库读取,MATLAB无法读取图像数据库问题
- Python爬虫从入门到精通——爬虫基础:HTTP基本原理
- synchronized加锁过程
- 【考研英语语法】一般将来时练习题
- 回溯法——最大团问题c
- 复制字符串中的元音字母
- vue3 动态获取屏幕尺寸
- 德州大学奥斯汀分校计算机科学排名,德州大学奥斯汀分校专业排名一览及最强专业推荐(QS世界大学排名)...
- [渝粤教育] 南京信息职业技术学院 模拟电子技术 参考 资料