如果父类中有多个有参构造方法,该如何在子类中调用指定的构造方法?
如果父类中有多个有参构造方法,那么在子类中调用指定的构造方法,可以使用 super 关键字来显式调用父类的指定构造方法。在使用 super 关键字调用父类构造方法时,需要传递与父类构造方法相匹配的参数列表。
例如,假设有如下的父类和子类:
public class Animal { private String name; private int age; public Animal(String name) { this.name = name;} public Animal(String name, int age) { this.name = name; this.age = age;} public void eat() { System.out.println(name + "正在吃饭...");}}public class Cat extends Animal { public Cat(String name) { super(name); // 调用父类的有参构造方法} public Cat(String name, int age) { super(name, age); // 调用父类的指定有参构造方法} public void printInfo() {eat(); System.out.println("名字:" + name + ",年龄:" + age);}}
在这个示例中,Animal类中定义了两个有参构造方法,分别接受一个参数和两个参数。Cat类继承了Animal类并定义了两个构造方法,分别接受一个参数和两个参数。在Cat类的构造方法中,使用 super 关键字调用了父类的有参构造方法来初始化父类的属性。在Cat类的printInfo()方法中,调用了父类的eat()方法和子类的属性。
需要注意的是,在使用 super 关键字调用父类构造方法时,需要将该语句放在子类构造方法的第一行。这是因为在子类构造方法中,必须先调用父类的构造方法来初始化父类的属性,然后才能进行子类自身的初始化。如果不将 super 关键字调用父类构造方法的语句放在第一行,编译器将会在编译时报错。
网友评论