【发布时间】:2009-12-10 03:30:36
【问题描述】:
我有几个我想知道的案例。首先,如果你没有构造函数:
class NoCons { int x; }
当我执行new NoCons() 时,会调用默认构造函数。它究竟是做什么的?它会将x 设置为 0,还是在其他地方发生这种情况?
如果我有这种情况怎么办:
class NoCons2 extends NoCons { int y; }
当我拨打new NoCons2() 时会发生什么? NoCons 的默认构造函数是否被调用,然后是 NoCons2 的构造函数?他们是否都将各自的 x 和 y 字段设置为 0?
这个版本怎么样:
class Cons2 extends NoCons { int y; public Cons2() {} }
现在我有一个构造函数,但它不调用超类的构造函数。 x 是如何被初始化的?如果我遇到这种情况怎么办:
class Cons { int x; public Cons() {} }
class NoCons2 extends Cons { int y; }
会调用Cons 构造函数吗?
我可以尝试所有这些示例,但我无法确定默认构造函数何时运行。考虑这个问题的一般方法是什么,以便我知道未来情况会发生什么?
【问题讨论】: