您的位置 首页 > 数码极客

〔子类如何调用父类〕子类如何调用父类的构造方法…

首先,我们写一个父类:

package com.wangyj.demo; public class Widget { public Widget(){ Sy("父类构造器"); } public synchronized void doSomething() { } public String test() { Sy("父类test 方法"); return ""; } }

父类

然后定义一个子类:

package com.wangyj.demo; public class LoggingWidget extends Widget { public LoggingWidget(){ Sy("子类构造方法"); } @Override public synchronized void doSomething() { Sy(toString()+ " call doSomething"); (); } public static void main(String[] args) { LoggingWidget widget = new LoggingWidget(); widget.doSomething(); } }

子类

运行结果如下:

运行结果

分析:

我们使用jdk 自带的工具javap进行反编译。进入到.class文件所在的目录执行命令 javap -c -l -v LoggingWidget;

输出结果如下:

javap返回结果1-1

javap 返回结果图1-2

javap 返回结果图1-3

从javap 返回结果图1-3中可以看出,main方法的执行顺序 先执行的 #12 的LoggingWidget的构造器,再观察javap 返回结果图1-2的LoggingWidget的构造器中执行了#1方法,#1便是父类的init 方法;然后main方法中又执行了子类的init方法

最后 执行doSomething()方法。从而可知,创建子类的时候先调用了父类的init方法,然后调用了自身的init 方法。

结论:

子类创建时,先调用的是父类的构造器方法,然后再次调用的子类的构造器方法。只会创建一个子类对象,不会创建父类对象,但是通过调用父类的init 方法,可以加载父类的方法。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“子类如何调用父类,子类如何调用父类的构造方法,子类如何调用父类方法,子类如何调用父类的成员变量”边界阅读