|
`super()`方法在Java中扮演着非常重要的角色,它主要用于在子类中调用父类(超类)的构造方法、实例方法或静态方法(尽管调用静态方法时更常用`类名.方法名`的方式,而不是`super`)。以下是`super()`方法的主要作用: 1. 调用父类构造方法: 在子类的构造方法中,你可以使用`super()`来调用父类的构造方法。这是确保父类被正确初始化的关键步骤。如果子类构造方法中没有显式调用父类构造方法(无论是直接调用还是通过其他构造方法间接调用),那么Java编译器会自动在子类构造方法的第一行插入一个对父类无参构造方法的调用(如果父类存在无参构造方法)。如果父类没有无参构造方法,且子类构造方法中也没有显式调用其他父类构造方法,那么编译器会报错。 示例: ```java class Parent { Parent() { System.out.println("Parent constructor called"); } } class Child extends Parent { Child() { super(); // 显式调用父类构造方法 System.out.println("Child constructor called"); } } ``` 2. 调用父类实例方法: 在子类中,你可以使用`super`关键字来调用被重写(Override)的父类实例方法。这在某些情况下非常有用,比如当你需要在子类中保留对父类方法行为的调用时。 示例: ```java class Parent { void display() { System.out.println("Parent display method"); } } class Child extends Parent { @Override void display() { super.display(); // 调用父类方法 System.out.println("Child display method"); } } ``` 3. 调用父类静态方法: 虽然`super`也可以用于调用静态方法,但这种情况相对较少见,因为静态方法是与类本身关联的,而不是与类的实例关联的。通常,你会直接使用类名来调用静态方法