在Java中,super
是一个关键字,用于引用父类的成员(字段、方法、构造函数),以区分子类和父类中具有相同名称的成员。super
的使用有以下几个方面:
1 调用父类的方法: 在子类中,如果子类重写了父类的某个方法,但仍然想调用父类的原始方法,可以使用 super
关键字
class Parent {
void display() {
System.out.println("Parent class");
}
}
class Child extends Parent {
@Override
void display() {
// 调用父类的display方法
super.display();
System.out.println("Child class");
}
}
2 调用父类的构造函数: 在子类的构造函数中,可以使用 super
调用父类的构造函数。这通常用于在子类的构造函数中执行父类的初始化操作
class Parent {
Parent() {
System.out.println("Parent constructor");
}
}
class Child extends Parent {
Child() {
// 调用父类的构造函数
super();
System.out.println("Child constructor");
}
}
3 访问父类的字段: 如果子类和父类中有同名的字段,可以使用 super
关键字来访问父类的字段
class Parent {
String name = "Parent";
}
class Child extends Parent {
String name = "Child";
void displayName() {
// 访问父类的name字段
System.out.println(super.name);
}
}
需要注意的是,super
必须在子类的方法或构造函数中使用,而且只能用于访问直接父类的成员。如果存在多层继承,super
只能访问直接父类的成员,无法直接访问更远的父类。
总的来说,super
是在子类中引用父类成员的一种方式,它有助于处理继承关系中的命名冲突和调用父类的方法或构造函数