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

问题描述:

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

这里是我们的代码。

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(新B(12));

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

原因:实际的和正式的参数列表长度

不同请问你们能帮助我明白我做了什么错?

+0

您可能忘记了重新编译其他类文件。 – SLaks

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

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

或者更可能的是,'super(b.b);'。 – chrylis

你不需要从B到C.重新加载信息简单地使B的场可见到C如让他们保护