📜  在Java中使用 super 关键字调用基类构造函数(1)

📅  最后修改于: 2023-12-03 14:51:17.087000             🧑  作者: Mango

在Java中使用 super 关键字调用基类构造函数

在Java中,super 关键字用于调用父类的属性、方法和构造函数。本文将重点介绍如何在子类中使用 super 关键字调用基类构造函数。

父类构造函数

在 Java 中,每个类都有一个默认的无参构造函数。如果未显式定义构造函数,则编译器会自动为其创建一个无参构造函数。但是如果我们需要定义带有参数的构造函数,那么默认构造函数就不会存在。

在这种情况下,我们需要在子类中显式调用父类的构造函数,以初始化父类的属性。如果我们不调用父类的构造函数,则会导致父类属性无法被正确地初始化,这将导致程序中的错误。

super 关键字调用父类构造函数

通过使用 super 关键字,我们可以在子类中调用父类的构造函数,主要有以下两种方式:

1. 不带参数的 super 构造函数

假如在基类中定义了一个不带参数的构造函数,那么我们可以直接在子类的构造函数中使用 super() 来调用父类的构造函数。示例代码如下:

class Parent {
    public Parent() {
        System.out.println("调用了父类不带参数的构造函数");
    }
}

class Child extends Parent {
    public Child() {
        super(); // 调用父类不带参数的构造函数
    }
}

在上述代码中,子类 Child 的构造函数中,通过 super() 调用了父类 Parent 的不带参数的构造函数。输出结果为:调用了父类不带参数的构造函数

2. 带参数的 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 关键字调用基类构造函数,希望可以帮助到大家。