IAM编程初学者,介绍如何调用基类中提供的参数化构造函数。 我的代码:
public class base {
int a, b;
base(int x) {
a = x;
System.out.println(a);
}
static class derived extends base {
derived(int y) {
b = y;
System.out.println(b);
}
}
public static void main(String[] args) {
derived de = new derived(10);
}
}
答案 0 :(得分:3)
super(int)
是指base(int x)
:
derived(int y) {
super(DEFAULT_VALUE_FOR_A);
b = y;
System.out.println(b);
}
其中DEFAULT_VALUE_FOR_A
是一个int
值,用于初始化a
中的字段base
。
请遵循Java命名约定,您的代码难以阅读。类名的首字母应大写。
答案 1 :(得分:1)
创建父级任何类构造函数的对象时,也称为
在您的情况下,派生的de = new派生的(10); 将在派生的(int y)中调用base()。
在基类中添加默认构造函数,或者调用基数形式的参数化构造函数
public class Base {
int a, b;
Base(){} // if you remove this please add super(0) in Derived(int y)
Base(int x) {
a = x;
System.out.println(a);
}
static class Derived extends Base {
Derived(int y) {
// super(0); // uncomment this if you dont want to add default constructor in your parent class
b = y;
System.out.println(b);
}
}
public static void main(String[] args) {
Derived de = new Derived(10);
}
}