Java:子类的构造函数具有父类的对象
我在学校学习Java,在继承和构造函数方面遇到了一个问题。 我有3个班,A班,B班和C班。 类A是超类,类B扩展类A,类C扩展类B。 类B有一个构造函数,其形式(参数)是字符串。在这里之前一切都好。 现在,我将B类扩展到C类。在C类中,我需要创建一个 具有类B的实例作为其参数。然后我需要提取一些信息 从B类中提取并存储在C类中 这是我们的代码Java:子类的构造函数具有父类的对象,java,inheritance,constructor,Java,Inheritance,Constructor,我在学校学习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
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(新的B(12))
当这个被编译时,我得到一个错误。
错误:类B中的构造函数B不能应用于给定类型
原因:实际参数列表和正式参数列表长度不同
你们能帮我理解我做错了什么吗?你们必须从C的构造函数显式调用B的构造函数,因为B类中没有定义默认构造函数
public C(B b) {
super(0);
this.c = b.b;
}
您不需要将信息从B重新加载到C。只需使B的字段对C可见,例如使其受保护您可能忘记重新编译其他类文件。或者,更可能的是,
super(B.B)代码>。