super关键字和this关键字类似,是子类持有的父类的引用。当子类的方法和属性和父类的属性和方法重名时,会隐藏父类的属性和行为,这里可以使用super进行调用父类的属性和行为。
1、子类中,调用父类覆盖的方法,引起super的例子,此时必须使用super
示例1:
public class Person {
private String name;
public Person(){
this.name = name;
}}
class Student extends Person{
int changeTimes = 0;
public void changeName(String name){
// 此处调用父类的changeName 方法
super.changeName(name);
this.changeTimes ++;
}
}
2、子类的构造函数中,调用父类的构造函数,此时必须使用super
示例2:
public class Person {
private String name;
public Person(){
}
public Person(String name){
this.name = name;
}
public void changeName(String name){
this.name = name;
}
}
class Student extends Person{
int changeTimes = 0;
public Student(String name, int changeTimes){
// 此处调用父类的构造函数时,必须使用super关键字来调用
super(name);
this.changeTimes = changeTimes;
}
public void changeName(String name){
super.changeName(name);
this.changeTimes ++;
}
}