Java中除了this,还有一个关键字super,super指父类,在类的继承中有重要的作用。
1.使用super访问父类的属性和方法
子类自动继承父类的属性和方法(除private修饰),一般情况下,直接使用父类的属性和方法,也可使用this来指明本对象。但有时为了明确指明父类的属性和方法,使用关键字super。
如:父类Person中有age属性,子类使用age,this.age,super.age来访问age是一样的:
class="java">void testSuper(){ int a; a=age; a=this.age; a=super.age; }
?当然,使用super不能访问子类自己定义的属性和方法。
有时需要使用super来区别同名的属性和方法。使用super可以访问被子类隐藏的同名变量,或者当子类覆盖了父类的同名方法的同时,想调用父类的方法,使用super。如:
void sayHello(){ super.sayHello(); System.out.println("My School is"+school); }
?
2.使用父类的构造函数
在严格意义上,构造函数不允许继承,但这并不意味着子类不能调用父类的构造方法。子类在构造方法中,可以使用super来调用父类的构造函数。
Student(String name,int age,String school){ super(name,age); this.school=school; }
?
使用时,super应放在第一句。
3.使用super的注意事项
在使用super时,super指的是调用“对象”本身,而不是指父类中看见的属性和方法。由于他指的是对象,所以不能在static的环境中使用,包括类变量(static field)和类方法(static method),static语句块。