1.首先看子类是否有该属性。
2.如果子类有这个属性,并且可以访问,则返回信息。
3.如果子类没有这个属性,就看父类有没有这个属性(如果父类有这个属性,并且可以访问,就返回信息)
4.如果父类没有就按照3.的规则继续找上级父类,直到object
super代表父类的引用,用于引用父类的属性,方法,构造器。
注意:不能访问父类的1private属性和方法,如果访问父类的的构造器,只能放在构造器的第一句。
1.调用父类的构造器的好处(分工明确,父类属性由父类初始化,子类构造器由子类初始化)
2.当子类中有二和父类同名的成员(属性和方法)重名时,为了访问父类的成员,必须通过super。如果没有重名,使用super、this、直接访问是一样的效果。
调用父类方法和属性的规则:
1.先找本类,如果有,则调用。
2.如果没有,则找父类(如果存在就调用)
3.如果父类没有就继续往上找。
1.直接跳过本类的查找,调用父类的方法
2.如果父类没有,则继续往上找
注意:如果父类中有私有的属性与方法,则不能直接去调用,而是同过一个公共的方法去调用。
3.super的访问不限于直接父类,如果多个基类(上级类)中都有同名的成员,使用super遵循就近原则。A->B->C
区别 | this | super | |
1 | 访问属性 | 访问本类中的属性,如果本类中没有此属性则从父类中继续查找。 | 访问父类中属性 |
2 | 调用方法 | 访问本类中的方法,如果本类没有此方法则从父类中继续查找。 | 直接访问父类中的方法 |
3 | 调用构造器 | 调用本类构造器,必须放在构造器的首行 | 调用父类构造器,必须放在构造器的首行 |
4 | 特殊 | 表示当前对象 | 子类中访问父类对象 |