A级
class A {
int a;
int c;
A (int a, int c) {
this.a = a;
this.c = c;
}
}
B级
class B extends A{
public static void main (String [] args) {
A obj = new A (5, 6);
}
}
当我编译代码时它向我显示了这个错误
B.java:1: error: constructor A in class A cannot be applied to given types;
class B extends A{
^
required: int,int
found: no arguments
reason: actual and formal argument lists differ in length
1 error
何时出现此错误?当继承类时,构造函数必须是同类超类吗?
答案 0 :(得分:5)
A
指定带有两个参数的构造函数,B
仅指定无参数(默认值)。
如果你真的想让B
继承A
,你还需要创建一个构造函数,也可以是一个带有两个参数的构造函数,或者只是调用{{1}的构造函数。 1}}使用默认值:
A
但是,如果您只想在// variant A
class B extends A {
B (int a, int c) {
super(a, c);
}
}
// variant B
class B extends A {
B () {
super(0, 0); // replace 0 with an appropiate default value for each parameter
}
}
中实例化B
,则从您的代码中A
不需要继承A
。在这种情况下,只需删除继承。
答案 1 :(得分:1)
向类B
添加构造函数。
编译器意识到您无法实例化类B
!