Java:子类的构造函数具有父类的对象

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

我在学校学习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;

}

}
在我的主要

我有下面一行代码来创建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)