AJPFX关于面向对象中的对象初始化整理,综合子父类、代码块等等
今天总结了一下子父类当中含有静态代码块、代码块、构造函数、成员变量、子类复写父类方法时子类的初始化过程,把思路理清一下
- class Fu
- {
- //父类成员变量
- private int num = 3;
- //静态代码块,随着类的加载而加载
- static{
- System.out.println("父类静态代码块");
- }
- //代码块,运行于构造函数之前,成员变量显示初始化之后
- {
- System.out.println("父类代码块,num = "+num);
- }
- //构造函数,先去找他爸爸,运行完父类再运行子类
- Fu(){
- super();//此处去找Object,可忽略
- System.out.println("父类构造函数,num = "+num);
- //此处调用的是子类的show方法,因为被覆盖了,注意子类覆盖父类方法时,返回值也得一样
- show();
- }
- public void show()
- {
- System.out.println("父类show方法,num = "+num);
- }
- }
- class Demo extends Fu
- {
- private int age =23;
- //静态代码块,他有直接父类时,先去加载直接父类
- static{
- System.out.println("子类静态代码块");
- }
- //构造代码块,当有直接父类时,当父类运行完毕才轮到构造代码块
- {
- System.out.println("子类代码块,age = "+age);
- }
- Demo()
- {
- System.out.println("子类构造函数,age = "+age);
- show();
- }
- public void show()
- {
- System.out.println("子类show方法,age = "+age);
- }
- public static void main(String[] args)throws IOException
- {
- new Demo();
- }
- /*
- * 父类静态代码块
- 子类静态代码块
- 父类代码块,num = 3
- 父类构造函数,num = 3
- 子类show方法,age = 0
- 子类代码块,age = 23
- 子类构造函数,age = 23
- 子类show方法,age = 23
- * */
- }
总结一下:
1.父类字节码先被JVM加载,父类静态代码块先运行。
2.子类字节码被加载,子类静态代码块运行。
3.子类构造函数进栈,子类的成员变量默认初始化
4.super启动,父类构造函数进栈,父类成员变量默认初始化(super-->Object,可忽略)
5.父类成员变量显示初始化
6.父类构造代码块加载
7.父类构造函数运行。
8.子类成员变量显示初始化
9.子类构造代码块运行。
10.子类构造函数运行
AJPFX关于面向对象中的对象初始化整理,综合子父类、代码块等等的更多相关文章
- C++中的对象初始化
当对象在创建时获得了一个特定的值,我们说这个对象被初始化.初始化不是赋值,初始化的含义是创建变量赋予其一个初始值,而赋值的含义是把当前值擦除,而以一个新值来替代.对象初始化可以分为默认初始化.直接初始 ...
- Hive_UDF函数中集合对象初始化的注意事项
UDF函数中定义的集合对象何时初始化 udf函数放在sql中对某个字段进行处理,那么在底层会创建一个该类的对象,这个对象不断的去调用这个evaluate(...)方法,截图如下: 1.1 如果说对 ...
- AJPFX总结面向对象中成员变量和成员方法的定义
//面向对象中成员变量和成员方法的定义格式:========================================= 成员变量定义在类中方法外,可以被该类中所有方法使用. ...
- java中的静态变量、静态方法与静态代码块详解与初始化顺序
我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- java 对象的初始化流程(静态成员、静态代码块、普通代码块、构造方法)
一.java对象初始化过程 第一步,加载该类,一个java对象在初始化前会进行类加载,在JVM中生成Class对象.加载一个类会进行如下操作,下面给出递归描述.(关于Class对象详见反射 点击这里) ...
- JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...
- Java中的静态变量、静态方法、静态代码块
转载自http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)静态方法(1)在Java里,可以定义一个不需要创建对 ...
- java中的静态变量,静态方法与静态代码块详解
java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- Throwable类中3个异常处理的方法和finally代码块
/* Throwable类中定义了3个异常处理的方法 String getMessage() 返回此 throwable 的简短描述. String toString() 返回此 throwable ...
随机推荐
- 移动端html5页面长按实现高亮全选文本内容的兼容解决方式
近期须要给html5的WebAPP在页面上实现一个复制功能:用户点击长按文本会全选文字并弹出系统"复制"菜单.用户能够点击"复制"进行复制操作.然后粘贴到App ...
- mac for smartSVN9 (8,9)破解方法 附smartSvn_keygen工具图文
mac for smartSVN9 (8,9)破解方法 附smartSvn_keygen工具 工具文件下载: http://files.cnblogs.com/files/xueshanshan/s ...
- 5.eclipse 自带的jdk没有源码,改了它
其实JDK源码在安装的时候已经放在了jdk所在的目录下,只是eclipse使用 了不带有源码的jre,导致没找到对应的源码,点击 Window->Perference->Java-> ...
- 交换分区 在dd命令执行期间 top 其消耗系统约14%的cpu,而mem占比约为0
[资源不友好代码] from pyltp import * d_dir = '/usr/local/ltp_data_v3.4.0/' def gen_one_sentence_part(paragr ...
- Being a Hero (hdu 3251 最小割 好题)
Being a Hero Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- BZOJ1016 && JSOI2008] 最小生成树计数
题目链接:id=1016">点击打开链接 裸题 #pragma comment(linker, "/STACK:1024000000,1024000000") #i ...
- Lightoj 1166 - Old Sorting
Given an array containing a permutation of 1 to n, you have to find the minimum number of swaps to s ...
- Uvalive 4043 Ants —— 二分图最大权匹配 KM算法
题目链接:https://vjudge.net/problem/UVALive-4043 题意: 给出n个白点和n个黑点的坐标, 要求用n条不相交的线段把他们连接起来,其中每条线段恰好连接一个白点和黑 ...
- gcc编译系统
一. C语言编译过程 C语言的编译过程可分为四个阶段: 1.预处理(Preprocessing) 对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程. 伪指令包括:1)宏定义指令: 2)条 ...
- CentOS 6.6实现永久修改DNS地址的方法
本文实例讲述了CentOS 6.6实现永久修改DNS地址的方法. 百牛信息技术bainiu.ltd整理发布于博客园 分享给大家供大家参考,具体如下:1.配置ip地址文件 /etc/sysconfig/ ...