Java 父与子 内存
来源:互联网 发布:网络双生是什么意思 编辑:程序博客网 时间:2024/05/18 03:15
昨天讲了Java类成员的初始化顺序,我今天再深入的讲一下,先看下面的代码
public class Parent { int number = 1; public Parent() { display(); } public void display() { Log.d("TAG", " number = " + number); }}
public class Child extends Parent { int number = 2; public Child() { number = 3; } public void display() { Log.d("TAG", " number = " + number); }}如果我执行new Child();
大家能得出答案么?1或2?还是3呢?如果大家运行一下,大部分人可能都会懵逼了,why ? !!!
答案是0....
为什么是0呢,我们来分析一下
通过之前讲的类的初始化相关内容,在Parent的构造函数执行的时候,Child的变量与构造函数还未执行。其实在最开始的时候,编译器还做了一件事,那就是为变量分配内存,Parent与Child中的number变量都分配了内存空间,这时它们的值为0。
再认真想一下,我们在Parent构造函数里display()时,display()是调用的是Parent还是Child的呢?我们知道,当子类重写了父类的方法时,子类的方法就会覆盖父类的方法,我们是用的new Child(),那么这时的display()就是Child的。number是当前方法所在类的,所以结果是0。
0 0
- Java 父与子 内存
- Java之父、子实例的内存控制
- java中父进程与子进程
- 内存分配与回收策略---神算子
- Java与内存
- Java 内存与堆栈
- java 对象与内存
- Java类继承:父与子的恩恩怨怨
- java学习笔记-父与子的关系
- java:子,父类初始化顺序与细节。
- 父与子
- 父与子
- JAVA内存泄露与内存溢出
- Java中的栈内存与堆内存
- 栈内存与堆内存(Java)
- Java中堆内存与栈内存
- Java中的栈内存与堆内存
- java内存区域与内存溢出异常
- 文章标题
- SQL实现没有这条数据就添加,有这条数据就修改
- XMLHttpRequest对象
- C#控制台 创建一个Int类型的数组
- WebView加载视频与网页
- Java 父与子 内存
- linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
- Struts2 继承ActionSupport的用处
- Android Studio插件整理
- Android 版本检测更新
- C#实现程序开机启动的方法
- 实例带你了解Retrofit 2.0的使用,分享目前开发Retrofit遇到的坑和心得
- MES - 故障登记流程流程修正
- C语言程序的基本语句能完成功能的体会(结合飞机游戏或者其他软件)