class A {
int a, b;
A(int i, int j) {
a = i;
b = j;
}
}
class B extends A {
int c, d;
B(int i, int j) {
c = i;
d = j;
}
}
public class HelloWorld {
public static void main(String[] args) {
A aa = new A(5, 6);
B bb = new B(3, 4);
System.out.println(aa.a + aa.b + bb.a + bb.b + bb.c + bb.d);
}
}
它给出错误
HelloWorld.java:9: error: constructor A in class A cannot be applied to given types;
{
^
required: int,int
found: no arguments
reason: actual and formal argument lists differ in length
1 error
答案 0 :(得分:0)
当您上课B
扩展类A
时,您必须调用正在扩展的类的构造函数。
由于您的类A
没有无参数的构造函数,您需要显式调用超级构造函数(类A
中的构造函数)作为第一个语句在班级B
的构造函数中:
B(int i, int j) {
super(i, j);
// Your code
}
如果在A
中有一个no-args构造函数,则不需要这样做,因为如果没有指定构造函数调用,则 no-args构造函数被隐式调用:
B(int i, int j) {
// Your code
}
实际上在做:
B() {
super();
// Your code
}
由于您没有A()
作为构造函数,因此会出现错误。
答案 1 :(得分:0)
检查一下...... JVM总是在寻找没有参数的构造函数。
class A {
int a, b;
A(int i, int j) {
a = i;
b = j;
}
public A() {
// TODO Auto-generated constructor stub
}
}
class B extends A {
int c, d;
B(int i, int j) {
c = i;
d = j;
}
}
public class pivot {
public static void main(String[] args) {
A aa = new A(5, 6);
B bb = new B(3, 4);
System.out.println(aa.a + aa.b + bb.a + bb.b + bb.c + bb.d);
}
}