我正在学习Java,我遇到了继承和构造函数的问题。 我有3个班级,A班,B班和C班。 A类是超类,B类扩展A类,C类扩展B类。 B类有一个构造函数,其形式(参数)是一个String。一直都好到这里。 所以现在,我将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;
}
}
在我的主要()
我有以下代码行来创建C
的实例C c_c = new C(new B(12));
编译时,我收到错误。 错误:B类中的构造函数B不能应用于给定类型;
原因:实际和正式的参数列表长度不同
你们能帮我理解我做错了吗?
答案 0 :(得分:2)
你必须从C&#39的构造函数中显式调用B&#39的构造函数,因为没有在B类中定义的默认构造函数
public C(B b) {
super(0);
this.c = b.b;
}
答案 1 :(得分:0)
您不需要将信息从B重新加载到C.只需将B的字段显示为C,例如使其受到保护