Java子类调用父类构造方法

1. 介绍

在面向对象的编程语言中,继承是一个重要的特性。Java作为一种面向对象的编程语言,也支持继承。在Java中,子类可以继承父类的属性和方法,并且可以通过调用父类的构造方法来初始化继承得来的属性。本文将介绍Java子类调用父类构造方法的用法和示例。

2. 子类继承父类

在Java中,使用extends关键字来实现继承。子类可以继承父类的属性和方法,并且可以添加自己的属性和方法。下面是一个简单的示例:

public class ParentClass {
    private int age;
    
    public ParentClass(int age) {
        this.age = age;
    }
    
    public void printAge() {
        System.out.println("Age: " + age);
    }
}

public class ChildClass extends ParentClass {
    private String name;
    
    public ChildClass(int age, String name) {
        super(age);
        this.name = name;
    }
    
    public void printName() {
        System.out.println("Name: " + name);
    }
}

在上面的示例中,ParentClass是一个父类,ChildClass是一个子类。子类ChildClass继承了父类ParentClass的属性age和方法printAge(),并且添加了自己的属性name和方法printName()。在子类的构造方法中,通过调用super(age)来调用父类的构造方法来初始化继承得来的属性。

3. 子类调用父类构造方法的语法

子类调用父类构造方法的语法是super()super()表示调用父类的构造方法,并且可以传递参数来初始化父类的属性。

super(parameter1, parameter2, ...);

在子类的构造方法中,如果没有显示调用super(),Java会默认调用父类的无参构造方法。如果父类没有无参构造方法,那么子类就必须显式调用父类的构造方法。

4. 子类调用父类构造方法的使用场景

子类调用父类构造方法的主要使用场景有两种:

  • 初始化继承得来的属性:在子类的构造方法中,通过调用父类的构造方法来初始化继承得来的属性。
  • 扩展父类的功能:子类可以在自己的构造方法中调用父类的构造方法来初始化父类的属性,然后再进行自己的初始化操作。

5. 子类调用父类构造方法的示例

下面我们通过一个示例来详细说明子类如何调用父类的构造方法。

public class Shape {
    private String color;
    
    public Shape(String color) {
        this.color = color;
    }
    
    public void printColor() {
        System.out.println("Color: " + color);
    }
}

public class Circle extends Shape {
    private double radius;
    
    public Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }
    
    public void printRadius() {
        System.out.println("Radius: " + radius);
    }
}

在上面的示例中,Shape是一个父类,Circle是一个子类。子类Circle继承了父类Shape的属性color和方法printColor(),并且添加了自己的属性radius和方法printRadius()。在子类的构造方法中,通过调用super(color)来调用父类的构造方法来初始化继承得来的属性。

下面是一个使用示例:

public class Main {
    public static void main(String[] args) {
        Circle circle = new Circle("Red", 5.0);
        circle.printColor();    // 输出:Color: Red
        circle.printRadius();   // 输出:Radius: 5.0
    }
}

在上面的示例中,我们创建了一个Circle对象,并且传递了颜色和半径的参数。在创建对象的过程中,子类的构造方法会调用父类的构