java - 子类型的构造函数

标签 java inheritance constructor

考虑

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/

相关文章:

java - 当基类有带参数的构造函数时,为什么我不能创建无参数的子类构造函数?

java - 为什么连接终止时不抛出异常?

java - JFileChooser 和 JTextField 连接

java - JEE 的 Vaadin 和 Spring 之间如何选择

javascript - 为什么getComputedStyle不返回显示:none for an element hidden by a parent?

c++ - 继承构造函数

Java注解处理器,处理顺序

C++,帮助扩展这个类

java - 为什么我不能用短构造函数参数声明枚举类型?

java - 在构造函数中从另一个类设置值