Java super关键字
super关键字在Java中有两个主要的用途:
调用父类的构造方法:在子类的构造方法中,可以使用super关键字来调用父类的构造方法,以便完成父类的初始化工作。使用super关键字调用构造方法时,需要注意以下几点:
- super关键字必须是构造方法的第一条语句,不能出现在其他语句之后。
- 如果子类的构造方法没有显式地调用父类的构造方法,那么编译器会自动添加一个默认的super()语句,来调用父类的无参构造方法。
- 如果子类的构造方法显式地调用了父类的构造方法,那么编译器就不会再自动添加默认的super()语句了。
- 子类的构造方法可以选择性地调用父类的有参构造方法或无参构造方法,通过传递参数来完成父类的初始化。
引用父类的成员变量或方法:在子类中,可以使用super关键字来引用父类中的成员变量或方法。使用super关键字可以解决父子类中同名成员变量或方法的冲突问题。通过super关键字,可以明确地指定要引用的是父类中的成员变量或方法。
例子:
class Parent {
String name;
Parent(String name) {
this.name = name;
}
void print() {
System.out.println("Parent: " + name);
}
}
class Child extends Parent {
int age;
Child(String name, int age) {
super(name); // 调用父类的构造方法
this.age = age;
}
@Override
void print() {
super.print(); // 调用父类的print方法
System.out.println("Child: " + age);
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child("Tom", 12);
child.print();
}
}
输出结果:
Parent: Tom
Child: 12