0

我在学校学习 Java,遇到了继承和构造函数的问题。我有3个类,A类,B类和C类。A类是超类,B类扩展A类,C类扩展B类。B类有一个构造函数,其形式(参数)是一个字符串。一切都很好,直到这里。所以现在,我将 B 类扩展到 C 类。在 CI 类中,需要创建一个构造函数,该构造函数具有 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;

}

}

在我的主要()

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

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

当它被编译时,我得到一个错误。错误:B 类中的构造函数 B 不能应用于给定类型;

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

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

4

2 回答 2

2

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

public C(B b) {
   super(0);
   this.c = b.b;
}
于 2013-10-27T00:29:14.550 回答
0

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

于 2013-10-27T03:23:32.867 回答