我在以下图像中附加了我的代码段。我这里有两节课。一个是基类,另一个是子类。这两个类都有自己的构造函数。我已经在测试类中创建了基类和子类的对象,并向构造函数发送了一些值。当我编译程序时,出现错误,指出“类中的构造函数无法应用于给定类型”,原因是“实际和形式争论的长度不同”。为什么会出现此错误?
class base {
int a;
int b;
base(int w, int x) {
a = w;
b = x;
}
public void display() {
System.out.println("value of a is: " + a);
System.out.println("value of b is: " + b);
}
}
class sub extends base {
int c;
int d;
sub(int y, int z) {
c = y;
d = z;
}
public void display() {
System.out.println("value of a is: " + c);
System.out.println("value of b is: " + d);
}
}
class test {
public static void main(String[] args) {
base b1 = new base(10, 20);
sub s1 = new sub(30, 40);
b1.display();
s1.display();
}
}
答案 0 :(得分:-1)
在基类中创建默认构造函数。
您的子类构造函数隐式调用基类的默认构造函数。
如果要使用子类元素初始化基类,则可以从子类构造函数中调用super(int, int)
。
在上面的示例中,您可以按以下方式使用
: sub(int y, int z) {
super(y,z);
c = y;
d = z;
}
在这种情况下,基类具有与传递给子类相同的值。
如果您不从子类构造函数调用super(int, int)
,则会在内部调用基类的默认构造函数,如下所示:
sub(int y, int z) {
super();
c = y;
d = z;
}