【发布时间】:2018-03-29 05:24:54
【问题描述】:
我只是想弄清楚这一点。假设我有以下超类 Geometry 的构造函数:
public Geometry(double x, double y)
{
this.position = new Point(x,y);
this.collisionMesh = new ArrayList<Point>();
this.displayMesh = new ArrayList<Point>();
}
Geometry 具有成员 position、collisionMesh 和 displayMesh,其所有子类都将继承。
现在,我有一个子类 Particle。以下是一个有效的构造函数:
public Particle(double x, double y)
{
super(x,y);
this.collisionMesh.add(this.position);
...
}
我要确定的是:对 super(x,y) 的调用会自动实例化我的子对象的 ArrayLists 和 Point,因此我不需要这样做。
另外,在更深层次上,假设我能做到这一点,这里到底发生了什么?感觉就像我在构造函数内部调用构造函数。如果 Particle 对象尚未构建完成,那么在调用 super 期间会构建什么?
【问题讨论】:
-
你做了很多与现实不太相似的假设。提示:所有这些都有很好且广泛的记录。
-
“构造函数”不是很幸运的名字。构造(在创建的意义上)对象是
new关键字。它创建了出现在它之后的类型对象,如new SomeClass。构造函数就像 initialize 已经创建对象到正确状态的方法(所以它就像new运算符调用的特殊方法,基于提供的参数)。 -
谢谢你,@Pshemo,澄清了。对其他人:诚然,我本可以做更多的研究,但现在我只是很高兴看到反对票可以降到多低......
-
@MichaelStachowsky 这真是个坏主意。你看,人们实际上可以决定用垃圾邮件标记这样的评论。提出一个“不好的问题”是一回事......但是为了学习目的而去“嘿,让我们保留它”......不是一个好主意。如果你同意你提出了一个不好的问题:那么改进或删除它。
标签: java