先定义一个父类。里面定义成员变量和成员方法
子类继承父类,也有成员变量和成员方法,成员方法是重写了父类的。能写Override就写。这样看的就更加清楚。
子类定义父类没有的方法、里面分别输出了三个num的值
创建子类对象。调用show方法
输出的结果
子类的method里面调用父类的method方法
这样子类在调用method的时候,会去把父类的执行一遍。然后再去执行子类的
这既是刚才写的点的简略版
内存图
橙色的super_class在最后编译后的class文件在子类上是带着的
这个橙颜色的特殊标记,是用来干什么的呢?它其实是一个指向,指向了父类
就是在子class做一个标记。告诉它父亲是谁。就好比写的extends关键字
main方法先进站
main方法进栈就要看他做了什么事,首先是创建了一个子对象。凡事new出来的都在堆当中
今天的这个子可不是单纯的子,因为是有几成关系的子
子类对象当中,包含一个完整的父类结构。所以一定是先把父类构造完了,再在父类的外围写上子类的内容
super代表里面的。this代表外面的
new了一个对象。0x666的地址就会赋值给zi这个对象
这个对象和以往的区别,不再是一层嵌套,而是两层嵌套
zi调用show方法,show只在子类中才有。所以。show方法进栈
第一个num没有修饰符,就会优先使用局部变量
this是蓝色 的指向
super是绿色的指向
调用zi的method。zi的method优先进栈
子的method里面有个super的调用,调用的就是父类的method
所以还要再进栈。父的mehtod进栈