java中的继承
来源:互联网 发布:淘宝链接转换淘口令 编辑:程序博客网 时间:2024/06/04 18:13
子父类构造函数-子类的演化过程
先看下边的程序运行的结果是什么
这段程序 的运行结果是
zi show....1...0
zi show....2....10
zi show....1...10
原因是,看下图内存分析 图
原因:
这里是程序 刚开始 执行的地方
Zi zi = new Zi();
程序 会先执行子类的构造函数 ,在子类的构造方法中,有一句super()语句,当代码执行到这一句后,程序 会进入Fu类中运行,
这里,由于父类 的构造方法中,也有一句super(),它默认继承Object类,不做考虑,当它运行到Show()方法时,由于子类重写了父类的show()方法,所以这时程序 会调用子类的show()方法,由于子类对象这会在堆中并没有进行赋值操作 ,所以这时的num = 0; (注意这里的num会是默认值 0),所以它会先运行子类的show()方法,并且num = 0;
然后父类 的构造方法中,会继续执行return语句,父类 弹栈,然后子类的构造方法中,super(),调用完后,这里子类中的num变量会被赋值为10,最后
Zi zi = new Zi();这一句代码执行完毕 ,
zi.show();
再执行这一句代码,num = 10;一个对象实例化过程
Person p = new Person();
1,JVM会读取指定的路径下的Person.class文件,并加载 进内存,并会先加载Person的父类 (如果有直接的父类 的情况下)
2,在堆内存中开辟空间,分配 地址,
3,并在对象空间中,对对象中的属性进行默认初始化。
4,调用对应的构造函数进行初始化
5,在构造函数 中,第一行会先到调用父类 中构造函数 进行初始化,
6,父类 初始化完毕 后,在对子类的属性进行显示 初始化。
7,在进行子类构造函数的特定初始化
8,初始化完毕 后,将地址值 赋值给引用变量
下面的例子加上了构造代码块
class Fu{ { System.out.println("fu contructor ...");---> 1,第一步 show(); ---------------------------------->子类重写父类方法,运行子类的方法 } Fu(){ super();//Object //显示初始化 //构造代码块初始化 System.out.println("fu run");-----------------> 3.第三步 } public void show(){ System.out.println("fu show ..."); }}class Zi extends Fu{ int num = 9; { System.out.println("zi contructor ..."+num);---->4.第四步 num = 10; } Zi(){ super();//注意:super调用完之后,中间是下边这两步 //显示初始化 //构造代码块初始化 System.out.println("zi run ..."+num); ------------>5.第五步 } @Override public void show() { System.out.println("zi show ..."+num);-------------> 2.第二步 } -------------> 6.第六步}public class DemoSummary { public static void main(String[] args){ new Zi().show();------------------------------------>程序入口 }}
运行结果是
fu contructor ...
zi show ...0
fu run
zi contructor ...9
zi run ...10
zi show ...10
- java中的继承关系
- java中的继承
- Java中的继承
- Java中的继承
- java中的继承
- java中的继承相关内容
- java中的多继承
- java中的继承
- Java语言中的继承
- java中的继承
- 简述Java中的继承
- Java 中的多重继承
- java中的继承
- java中的继承关系
- java中的继承
- java中的继承细节
- Java 中的继承
- Java中的继承
- 数十种TF案例
- mvp开发实际操作
- 模板方法设计模式
- Spring3 MVC 输出JSON
- WPS的那些神技巧你会了就离升职加薪不远了
- java中的继承
- 最小费用最大流的问题
- ArrayList,HashMap,LinkedList 初始化大小和 扩容机制
- 特斯拉首次正面回应在华建厂事宜!别高兴太早,独资建厂的特斯拉给不了你白菜价
- Django 重写user表
- 慢查优化
- 认识name属性
- Java中有关Null的9件事
- Windows下Node.js与npm的安装与配置