JAVA面向对象中继承子父类构造函数-子类的实例化过程-图解
父类构造函数-子类的实例化过程
例子:
class Fu{Fu() //构造函数{super(); //默认隐藏show();return; //默认隐藏}void show(){System.out.println("fu show");}
}
class Zi extends Fu{int num = 8;Zi() //构造函数{super(); //默认隐藏return; //默认隐藏}void show(){System.out.println("zi show...."+num);}
}
public class Demo {public static void main(String[] args){Zi z = new Zi();z.show();}
}
运行结果:
内存图解
main函数进栈,然后z
new了Zi()
对象
new Zi() 对象 准备把类加载进方法区,然后这时发现,这类中,还有一个父类,于是把它们一起加载进方法区
随着类的加载完毕,于是执行new Zi();于是在堆内存开辟了一块空间
num 默认初始化为0
然后执行了 Zi() 里面的构造函数,构造函数进栈
然后执行构造函数里面的内容
里面有个默认的super();执行父类的,刚好我们这里继承了父类,于是父类的构造函数也进栈了
执行Fu类构造函数里面的内容,里面有个show()方法,于是通过this地址找到了堆内存开辟的内存,先是在Zi里面找,发现有show,于是执行.
这也是为什么我们第一个会输出:zi show....0
的原因
然后return;结束,然后退栈,然后num就开始显示初始化为8.
这里如果Zi的方法没有叫show()的,那么在找不到的情况下,就会去到Fu里面找
可以自己修改代码测试一下.
Zi里面的构造函数super内容执行完之后,往下执行,然后遇到return;
于是也退栈
全部执行完之后,就把堆内存开辟的内存的地址给到了z,z就指向了它
然后这时执行z.show();也就输出了 zi....show8
了.
一个对象实例化的过程
Person p = new Person();1.JVM虚拟机会读取指定路径下的Person.class文件,并加载进内存并会先加载Person的父类(如果有直接父类的情况下).2.在堆内存中开辟空间,分配地址.3.并在对象空间中,对对象中的属性进行默认初始化.4.调用对应的构造函数进行初始化5.在构造函数中,第一行会先调用父类中的构造函数进行初始化6.父类初始化完毕后,再对子类属性进行显示初始化.7.在进行子类构造函数的特定初始化8.初始化完毕后,将地址赋值给引用变量
JAVA面向对象中继承子父类构造函数-子类的实例化过程-图解相关推荐
- JAVA面向对象中继承的子父类成员函数的内存图解,以及成员函数中的覆盖的应用.
JAVA中继承子父类成员函数的使用 我把成员函数理解为就是类里面的功能,或者说是方法. 子父类的成员函数调用可以是这样的 例如: class Fu{void show1(){System.out.pr ...
- C++中继承的父类与子类的关系
- php继承时父类与子类构造函数的优先问题
php类在继承时父类与子类构造函数的优先问题可以归纳如下: 父类有构造函数,子类没有,在实例化子类时,会调用父类构造方法, 父类有构造函数,子类也有,在实例化子类时,会调用子类构造方法, <?p ...
- Java面向对象(继承、抽象类)
面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 ...
- java面向对象——包+继承+多态(一)
文章目录 包(package) 概念: 创建包 注意事项: 导入包中的类: 直接导入 import语句导入 注意事项: 静态导入(了解即可) 包的访问权限 常见的系统包 继承 继承的语法规则 注意要点 ...
- 8-2:C++继承之父类和子类对象赋值转换(公有继承)也即切片
父类和子类对象赋值转换(公有继承) - - - 父类和子类对象赋值转换是指:子类对象可以赋值给父类对象(父类的指针或引用也可以),而父类对象不能赋值给子类对象.也就Student一定是Person,但 ...
- Java中List的父类与子类如何转换
A是B的子类,但List不是List的子类.所以想直接转换是不行的. 一.子类转父类 List<A> childList = getxxxxxx; List<B> dadLis ...
- (十)Core Java 面向对象(封装,继承,多态,接口) -02 (96)
目录 : 24 ). 面向对象(聚集关系) 25 ). 面向对象(子父类中变量的特点) 26 ). 面向对象(子父类中函数的特点-覆盖) 27 ). 面向对象(子父类中构造函数的特点 ...
- Java面向对象之继承
继承: 1.提高了代码的复用性 2.让类与类之间产生了关系,有了这个关系,才有了多态的特性 Java语言中:java只支持单继承,不支持多继承(同时继承) 因为多继承容易带来安全隐患,当多个父类中定义 ...
- Java面向对象中的注意事项
关于Java面向对象编程,不可能是一开始就全部学完的,他会伴随着你的Java编程的整个过程,在以后的学习或者工作中,你才能够越来越深入的去理解面向对象这个思想.Object Oritended Pro ...
最新文章
- 深度学习(3)基础3 -- 前向传播与反向传播
- 【转】ABP源码分析三十一:ABP.AutoMapper
- linux下qt实现vlc视频播放器,Qt封装本地视频播放器(VLC二次开发)
- [转载] Java单例模式与构造器私有化
- CGI,FASTCGI,PHP-CGI,PHP-FPM 概念
- 【学习笔记】尚硅谷大数据项目之Flink实时数仓---DWD和DIM
- onlyoffice开发java_OnlyOffice功能及演示
- Nreal招聘|SLAM算法、深度学习算法、服务器开发工程师等多个岗位
- Nacos注册中心AP架构源码(Distro)上篇
- 电子计算机上的off是什么意思,计算器上off是什么意思
- 易基因 | 项目文章 | oxBS-seq揭示了宫颈癌发生过程中的表观遗传特征变化
- openresty-lua代码的语法检查
- Isabelle定理证明器
- 《2021中国开源发展蓝皮书》发布——中国开源接近世界先进水平
- 抓包工具wireshark和Fiddler的使用
- scroll-view 下滑列表加载的使用
- day-44(2)mysql
- cassandra日常维护之nodetool repair
- 儿童护眼灯怎么选?2022年好用的儿童护眼台灯推荐
- bug难免,但规避bug的五大方式你看了吗!