Java super 关键字
提示
- super 关键字的作用:
super
关键字在Java中用于在子类中访问父类的成员(包括属性、方法和构造函数)。 - 调用父类方法和属性:当子类重写父类的方法时,可以使用
super
来调用被重写的父类方法。同样,当子类和父类有相同的属性时,super
用于访问父类的属性。 - 在构造函数中使用super:
super()
用于在子类构造函数中显式调用父类的构造函数,无论是无参还是带参数的构造函数。如果省略,Java编译器会自动调用父类的无参构造函数。
在 Java 中,super
关键字用于子类访问超类(父类)成员(属性、构造函数和方法)。
在学习 super
关键字之前,请确保了解 Java 继承。
super 关键字的用途
- 调用在子类中被重写的超类方法。
- 如果超类和子类都有同名的属性(字段),则用来访问超类的属性。
- 在子类构造函数中显式调用超类的无参(默认)或带参数的构造函数。
让我们理解每个用途。
1. 访问超类的被重写方法
如果超类和子类中都定义了同名方法,子类中的方法将重写超类中的方法。这被称为 方法重写。
示例 1:方法重写
class Animal {
// 被重写的方法
public void display(){
System.out.println("I am an animal");
}
}
class Dog extends Animal {
// 重写的方法
@Override
public void display(){
System.out.println("I am a dog");
}
public void printMessage(){
display();
}
}
class Main {
public static void main(String[] args) {
Dog dog1 = new Dog();
dog1.printMessage();
}
}
输出
I am a dog
在这个例子中,通过创建 Dog
类的对象 dog1
,我们可以调用它的方法 printMessage()
,然后执行 display()
语句。
由于 display()
在两个类中都有定义,所以子类 Dog
的方法覆盖了超类 Animal
的方法。因此,调用的是子类的 display()
。
如果要调用超类中被重写的方法怎么办?
如果需要调用超类 Animal
中被重写的方法 display()
,我们使用 super.display()
。