使用super访问父类的域和方法
正是由于继承,使用this可以访问父类的域和方法,但有时为了明确地指明父类的域和方法,就要用关键字
super
。
例如:父类Person中一个字段age,在子类Student中使用age, this.age, super.age
来访问age是完全一样的。当然,不能使用super访问子类中的添加的域和方法。有时需要使用super以区别同名的域和方法
- 使用super可以访问被子类隐藏的父类的同名变量。
- 当覆盖父类的同名方法的时候,又要调用父类的该方法,就必须使用super。如:
void sayHello(){
super.sayHello();
System.out.println("Hello! My school is " + school);
}
- 好处:在覆盖父类的方法的同时,又利用已定义好的父类的方法。
使用super调用父类的构造方法
- 构造方法是不能继承的
- 比如,父类Person有一个构造方法
Person(String name, int age);
, 不能说子类Student也自动有一个构造方
- 比如,父类Person有一个构造方法