我创建了一个向上转换的演示,我不明白这段代码是如何工作的,或者我可以更具体地说,为什么在派生类完成调度时还调用基类的构造函数。甚至没有调用基类的构造函数。除了基类的构造函数如何调用之外,我什至没有在任何地方使用 super 关键字。class Base{ int value =0; Base(){ addValue(); } void addValue(){ value+=10; } int getValue(){ return value; }}class Derived extends Base{ Derived() { addValue(); } void addValue(){ value+=20; }}class Test{ public static void main(String args[]){ Base b=new Derived(); System.out.println(b.getValue()); }}
2 回答
HUH函数
TA贡献1836条经验 获得超4个赞
派生对象是基础对象,以及更多。Java 和大多数语言一样,需要构造整个对象,包括由 Base 构造函数初始化的部分。
看看是这样的:什么是将value的初始设置为0?那不也是 Base 代码的一部分吗?
super
如果您愿意,Java 允许您指定要使用的基类构造函数,但如果您不指定,它将选择一个。这些规则可能很复杂,但在这种情况下它们很简单:从无参数派生构造函数调用无参数 Base 构造函数。
作为测试,将 Base() 构造函数设置为私有并查看编译器告诉您的内容。
添加回答
举报
0/150
提交
取消