Java继承——构造函数

2023-11-21

在准备期末考试时,我在我目前正在学习的书中看到了以下陈述。考虑以下代码:

class A {
    public A(int x) {   }
}

class B extends A {
    public B(int x ) {   }
}

是否强制在B类的构造函数中调用A类的构造函数(super(x))。书中指出这不是强制性的,因为它们具有确切的参数数量和类型。但是当我在 java 编译器中尝试这个时,会抛出以下错误:

类 A 中的构造函数 A 不能 适用于给定类型;必需的: 发现 int:没有参数原因: 实际和形式参数列表 长度不同


编译器自动插入super()在一开始的时候。

然而,即使构造函数参数,super()(不带参数)添加调用default超类的构造函数。而你没有,因此会出现错误。

你必须指定super(x)(调用A(x)),或者定义一个无参构造函数。

顺便说一下,Eclipse 编译器给出了更好的错误消息:

隐式超级构造函数 A() 未定义。必须显式调用另一个构造函数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java继承——构造函数 的相关文章

随机推荐