📅  最后修改于: 2023-12-03 14:51:17.087000             🧑  作者: Mango
super
关键字调用基类构造函数在Java中,super
关键字用于调用父类的属性、方法和构造函数。本文将重点介绍如何在子类中使用 super
关键字调用基类构造函数。
在 Java 中,每个类都有一个默认的无参构造函数。如果未显式定义构造函数,则编译器会自动为其创建一个无参构造函数。但是如果我们需要定义带有参数的构造函数,那么默认构造函数就不会存在。
在这种情况下,我们需要在子类中显式调用父类的构造函数,以初始化父类的属性。如果我们不调用父类的构造函数,则会导致父类属性无法被正确地初始化,这将导致程序中的错误。
super
关键字调用父类构造函数通过使用 super
关键字,我们可以在子类中调用父类的构造函数,主要有以下两种方式:
super
构造函数假如在基类中定义了一个不带参数的构造函数,那么我们可以直接在子类的构造函数中使用 super()
来调用父类的构造函数。示例代码如下:
class Parent {
public Parent() {
System.out.println("调用了父类不带参数的构造函数");
}
}
class Child extends Parent {
public Child() {
super(); // 调用父类不带参数的构造函数
}
}
在上述代码中,子类 Child
的构造函数中,通过 super()
调用了父类 Parent
的不带参数的构造函数。输出结果为:调用了父类不带参数的构造函数
。
super
构造函数如果父类中只定义了带参数的构造函数,则子类必须通过构造函数的参数列表来调用父类的构造函数。在这种情况下,我们需要在子类构造函数的第一行中显式地调用父类的构造函数,并传递给它相应的参数。示例代码如下:
class Parent {
private String name;
public Parent(String name) {
this.name = name;
System.out.println("调用了父类带参数的构造函数,name = " + this.name);
}
}
class Child extends Parent {
public Child() {
super("Java"); // 调用父类带参数的构造函数,并传递参数
}
}
在上述代码中,子类 Child
的构造函数通过 super("Java")
来调用父类 Parent
的带参数的构造函数,并传递参数 "Java"
值。输出结果为:调用了父类带参数的构造函数,name = Java
。
在 Java 中,我们可以通过 super
关键字来调用父类的属性、方法和构造函数。本文主要通过两个示例介绍了如何在子类中使用 super
关键字调用基类构造函数,希望可以帮助到大家。