[英]Super constructor call
在Java中,如果我的类扩展了一个超类,并且默认情况下,构造函数的第一行是Super()
,那么超类的字段是否已初始化,或者仅构造函数在运行?
另外,如果超类中的构造函数调用了恰好在两个类中的方法,那么它是否运行超类或子类版本?
初始化超类的字段,还是仅运行构造函数?
这是同一件事。 调用构造函数时,会发生以下事情:
java.lang.Object
,否则将调用超类构造函数。 { }
的实例变量声明。 super()
调用之后的构造函数中的代码将被执行。 您可以在调用super()
时通过递归看到,步骤(2)在步骤(3)之前。 因此,是的,实例变量已初始化,构造函数代码已执行。
另外,如果超类中的构造函数调用了恰好在两个类中的方法,那么它是否运行超类或子类版本?
子类版本。 请注意,这与C ++有所不同,在C ++中,对象被视为部分构造,与v-table,
因此将运行超类版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.