我想用构造函数初始化实例变量,但出现编译错误。
class Test{
public static void main(String[] args){
A a = new A(5,6);
System.out.println(a.i);
}
}
class A{
int i, k;
A(int a, int b){
this.i=a;
this.k=b;
}
}
class B extends A{
int k;
B(int a, int b, int c){
this.k = a;
}
}
错误是:
Test.java:26: error: constructor A in class A cannot be applied to given types;
B(int a, int b, int c){
^
required: int,int
found: no arguments
reason: actual and formal argument lists differ in length
1 error
答案 0 :(得分:3)
您错过了super
中的B
通话。您可以使用
class B extends A{
int k;
B(int a, int b, int c){
super(a,b);
this.k = a;
}
}
您还可能打算使用this.k = c
。
答案 1 :(得分:0)
好吧,你的问题是,如果不先构造对象A,就无法构造对象B。如果在A中具有默认构造函数,则无需在B中调用super(它会自动被调用)。>