考虑
class MyClass{
public MyClass(Integer i){}
}
class MyExtendedClass extends MyClass{
public MyExtendedClass(SomeType s){ ... }//Compile error if SomeType!=Integer
public MyExtendedClass(Integer i){
super(i);
...
}
}
为什么我们不能定义与 MyClass 构造函数签名不同的 MyExtendedClass
构造函数?为什么我们必须首先调用父类(super class)的构造函数?
最佳答案
您可以定义具有不同签名的构造函数。但在子类的构造函数中,您必须调用基类的构造函数。基类需要初始化自身(例如其私有(private)成员),除了调用其构造函数之一之外没有其他方法可以做到这一点。
关于java - 子类型的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19080585/