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 ...
随机推荐
- 使用RNN解决句子对匹配问题的常见网络结构
/* 版权声明:能够随意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 除了序列标注问题外,句子对匹配(Sentence Pair Matching)问题也是NLP中非经常见 ...
- [Spring实战系列](19)Servlet不同版本号之间的差别
1. 2.3版本号 2.3版本号 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application ...
- React通过Ajax获取数据
React 组件的数据可以通过 componentDidMount 方法中的 Ajax 来获取,当从服务端获取数据库可以将数据存储在 state 中,再用 this.setState 方法重新渲染 U ...
- 更改Mysql登录密码
版本号49之前的跨域设置 在Windows命令行下修改mysql数据库密码步骤如下: 1.通过dos命令进入mysql的bin目录: 2.输入“mysql -uroot -p”,回车进入mysql命令 ...
- Codeforces 768 E. Game of Stones 博弈DP
E. Game of Stones Sam has been teaching Jon the Game of Stones to sharpen his mind and help him de ...
- Apache Flink 1.5.0 Release Announcement
Apache Flink: Apache Flink 1.5.0 Release Announcement https://flink.apache.org/news/2018/05/25/relea ...
- SVN服务器端的使用
SVN服务器端的使用 1.下载VirtualSVN Server,安装好后打开,右键Repository->新建->Repository创意一个版本库.默认点击下一步,输入要创建版本库的名 ...
- jackson实体为NULL或者为空不显示
1.实体上 @JsonInclude(JsonInclude.Include.NON_NULL) 将该注解放在属性上,如果该属性为null则不参与序列化: 如果放在类上边,那对这个类的全部属性起作用 ...
- ATan2与ATan的区别
相比较ATan,ATan2究竟有什么不同?本篇介绍一下ATan2的用法及使用条件. 对于tan(θ) = y / x: θ = ATan(y / x)求出的θ取值范围是[-PI/2, PI/2]. θ ...
- fscanf()函数详解【转】
本文转载自:http://blog.csdn.net/liangxanhai/article/details/8026496 以前解析有规律的文件的时候要么用正则表达式,要么就是傻傻的自己写程序来解析 ...