在Java中,super
关键字用于引用父类(或基类)的一个对象。它主要用于以下几种情况:
- 避免父类方法的隐藏(Override):当子类重写父类的方法时,可以使用
super
关键字调用父类的同名方法。这样可以确保父类的方法不会被子类完全隐藏。
class Animal {
void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
super.makeSound(); // 调用父类的makeSound方法
System.out.println("The dog barks");
}
}
- 访问父类的成员变量(Field):当子类需要访问父类的成员变量时,可以使用
super
关键字。注意,子类不能直接访问父类的私有变量(private),但可以通过公共的getter和setter方法来访问。
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Employee extends Person {
public void printName() {
super.setName("John Doe"); // 设置父类的name变量
System.out.println(super.getName()); // 访问父类的name变量
}
}
- 调用父类的构造方法:当创建子类对象时,如果子类没有显式地定义构造方法,那么将自动调用父类的无参构造方法。如果子类定义了构造方法,但仍然需要调用父类的构造方法,可以使用
super
关键字。
class Person {
private String name;
public Person() {
this.name = "Unknown";
}
public Person(String name) {
this.name = name;
}
}
class Employee extends Person {
public Employee() {
super("Employee"); // 调用父类的带参构造方法
}
}
总之,super
关键字在Java面向对象编程中用于引用父类的对象、方法和成员变量,以便在子类中实现多态性、避免父类方法的隐藏以及调用父类的构造方法等操作。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1179787.html