为什么Java没有像C++那样的初始值设定项列表?
在C++中,可以在构造函数开始运行之前使用初始值设定项列表初始化类的字段。例如:
Foo::Foo(string s, double d, int n) : name(s), weight(d), age(n) {
// Empty; already handled!
}
我很好奇为什么Java没有类似的功能。根据Core Java:第1卷:
C++使用此特殊语法来调用字段构造函数。在Java中,不需要它,因为对象没有子对象,只有指向其他对象的指针。
以下是我的问题:
“因为对象没有子对象”是什么意思?我不明白什么是子对象(我试图查找它);它们是否意味着扩展超类的子类的实例化?
至于为什么Java没有像C++那样的初始值设定项列表,我认为原因是因为所有字段在Java中都已经默认初始化,并且还因为Java使用关键字来调用super(或C++术语中的base)类构造函数。这是正确的吗?
super