基本语法:
- super用于子类,访问父类的非私有属性、非私有方法,并可在构造器中直接调用父类的构造器。
- 调用方法(例如cal(),首先查找子类是否有该方法,若有且可以访问则调用;若没有则查找父类是否有,若可以访问,则调用;否则查找父类的父类,一直到Object类,也可以写作this.cal())(super.cal()直接查找父类,其它的规则一样)
- 调用属性(与上述逻辑一致)
总结:
补充:继承的本质-建立查找关系----“建立子类的对象后,内存会发生什么变化?”
(1)先加载类,从Object开始,再Grandpa,再father,再son
(2)从Grandpa到father到son建立属性(虽然这三个类中都有属性name,但是不会发生冲突,在调用name时,先看子类有无name)