📅  最后修改于: 2020-03-22 14:34:29             🧑  作者: Mango
在Java中,不带参数的基类的构造函数在派生类构造函数中自动调用。例如,以下程序的输出为:
基类构造函数被调用
派生类构造函数被调用
// 文件名: Main.java
class Base {
Base() {
System.out.println("基类构造函数被调用 ");
}
}
class Derived extends Base {
Derived() {
System.out.println("派生类构造函数被调用 ");
}
}
public class Main {
public static void main(String[] args) {
Derived d = new Derived();
}
}
但是,如果要调用基类的参数化构造函数,则可以使用super()进行调用。需要注意的是基类构造函数调用必须是派生类构造函数的第一行。例如,在下面的程序中,super(_x)的第一行是派生的类构造函数。
// 文件名: Main.java
class Base {
int x;
Base(int _x) {
x = _x;
}
}
class Derived extends Base {
int y;
Derived(int _x, int _y) {
super(_x);
y = _y;
}
void Display() {
System.out.println("x = "+x+", y = "+y);
}
}
public class Main {
public static void main(String[] args) {
Derived d = new Derived(10, 20);
d.Display();
}
}
输出:
x = 10, y = 20