gpt4 book ai didi

Java继承——构造函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:17:27 24 4
gpt4 key购买 nike

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

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

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

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

constructor A in class A cannot be applied to given types; required: int found: no arguments reason: actual and formal argument lists differ in length

最佳答案

编译器会自动在开头插入super()

但是,即使是构造函数参数,super()(不带参数)也会被添加,它会调用父类(super class)的默认构造函数。而您没有,因此出现错误。

您必须指定 super(x)(以调用 A(x)),或定义无参数构造函数。

顺便说一下,Eclipse 编译器提供了一种更好的错误消息方式:

Implicit super constructor A() is undefined. Must explicitly invoke another constructor

关于Java继承——构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6248809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com