目录
继承的本质分析
当子类对象创建好后,建立了查找的关系。
案例演示
father继承了grandpa,son继承了father。
main中创建一个son对象,第一步是从object类开始创建再到grandpa类,father类,son类,堆区存放son类的地址,name,hobby是字符串类型,堆区里只有他们的地址,实际存的方法区里。age为int类型,直接存放在堆区,不是地址。
如果这时访问son类的name,得到结果是什么呢?
应按照如下规则:如果子类有name,那么就是子类的这个name,如果没有,就去这个子类的父类去找name,找到就返回值,没找到就继续找。
如果父类的age的权限为private,子类还是会继承这个age,但是无法访问他。
继承练习题
先调用子类b的无参构造器,由于有this,调用b的有参构造器,存在一个省略的super(),就去调用父类a的无参构造器,再回来输出b name,再回去输出b。
创建一个c对象,会最先进行c的无参构造,里面有一个this会调用c类的有参构造,有参构造里面有一个super会调用父类b的有参构造,b类的有参构造有一个被省略的super,所以会调用b的父类a的无参构造,输出我是a类,然后回到b类的有参构造,输出hahah我是b类的有参构造,再回到c类的有参构造,输出我是c类的有参构造,最后回到c类的无参构造,输出我是c类的无参构造。