【问题标题】:Java: Constructor of a subclass has an Object of parent classJava:子类的构造函数具有父类的对象
【发布时间】:2023-03-27 18:07:01
【问题描述】:

我在学校学习 Java,遇到了继承和构造函数的问题。 我有3个班级,A级,B级和C级。 A类是超类,B类扩展A类,C类扩展B类。 B 类有一个构造函数,其形式(参数)是一个字符串。一切都很好,直到这里。 所以现在,我将 B 类扩展到 C 类。在 C 类中,我需要创建一个构造函数 有一个 B 类的实例作为其参数。然后我需要提取一些信息 来自 B 类并将其存储在 C 类中。

这是我们的代码。

public class B extends A {

int b;

public B(int b) {
this.b=b;
}

}

public class C extends B {

int c;

public C(B b) {

this.c = b.b;

}

}

在我的 main() 中

我有以下代码行来创建一个 C 实例

C c_c = 新 C(新 B(12));

编译时出现错误。 错误:B 类中的构造函数 B 不能应用于给定类型;

原因:实际参数列表和形式参数列表的长度不同

你们能帮我理解我做错了什么吗?

【问题讨论】:

  • 你可能忘记重新编译其他类文件了。

标签: java inheritance constructor


【解决方案1】:

您必须从 C 的构造函数中显式调用 B 的构造函数,因为 B 类中没有定义默认构造函数

public C(B b) {
   super(0);
   this.c = b.b;
}

【讨论】:

  • 或者,更有可能是super(b.b);
【解决方案2】:

您不需要将信息从 B 重新加载到 C。只需让 B 的字段对 C 可见,例如使其受到保护

【讨论】:

    猜你喜欢
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多