JAVA 父类与子类初始化顺序问题
main方法-->子类对象的初始化语句(new className()语句)--->子类构造【因为继承的缘故,它先不会执行】--->父类构造【这一步先不会执行】--->父类静态变量----->子类静态变量---->初始化父类变量(按顺序)--->父类构造---->子类变量初始初始(按顺序)--->子类构造--->运行main后的语句--->程序结束。(按eclipse得debug顺序记录)
无继承的类初始化顺序:静态变量--->静态初始化块------>变量---->初始化块----->构造器。
附测试程序:
class Insect { private int i =9; protected int j; public Insect() { System.out.println("i = "+i+",j="+j); j=39; } private static int x1 = printInit("static intx1 initialized"); static int printInit(String s) { System.out.println(s); return 47; } }
public class Beetle extends Insect { private int k = printInit("beetle.k initialized"); Beetle() { System.out.println("k="+k); System.out.println("j = " +j); } private static int x2 = printInit("static beetle.x2 initialized"); public static void main(String[] args) { System.out.println("beetle constructor"); Beetle b = new Beetle();
}
}
其运行结果为
static intx1 initialized static beetle.x2 initialized beetle constructor i = 9,j=0 beetle.k initialized k=47 j = 39
JAVA 父类与子类初始化顺序问题的更多相关文章
- java中父类和子类初始化顺序
顺序 1. 父类中静态成员变量和静态代码块 2. 子类中静态成员变量和静态代码块 3. 父类中普通成员变量和代码块,父类的构造函数 4. 子类中普通成员变量和代码块,子类的构造函数 其中“和”字两端的 ...
- Java静态函数、父类、子类执行顺序
package class_test; /** * 静态函数.父类.子类执行顺序 * @author root * */ public class Test { public static void ...
- Java 类成员的初始化顺序
Java 类成员的初始化顺序 前言:开发中碰到一个Java文件中有很多的成员变量,包括静态和非静态的,还有很多的初始化方法,很好奇这些成员的初始化顺序,在这里作个研究. 1 无继承情况下的Jav ...
- Java中的成员初始化顺序和内存分配过程
Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...
- Java类的成员初始化顺序
Java类的成员初始化顺序 2017-06-01 代码: public class InitializeSequence { public static void main(String[] args ...
- java类的成员初始化顺序和初始化块知识
java类的成员初始化顺序和初始化块知识 转自:http://blog.csdn.net/lgfeng218/article/details/7606735 属性.方法.构造方法和自由块都是类中的成员 ...
- Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序
实例化子类时,父类与子类中的静态代码块.实例代码块.静态变量.实例变量.构造函数的执行顺序是怎样的? 代码执行的优先级为: firest:静态部分 second:实例化过程 详细顺序为: 1.父类静态 ...
- Java父类与子类方法调用顺序
父类 FatherClass package 父类与子类方法调用顺序; /** * 父类 * @author shundong * */ public class FatherClass { priv ...
- Java静态方法,静态变量,初始化顺序
1. 静态方法: 成员变量分为实例变量和静态变量.其中实例变量属于某一个具体的实例,必须在类实例化后才真正存在,不同的对象拥有不同的实例变量.而静态变量被该类所有的对象公有(相当于全局变量),不需要实 ...
随机推荐
- Space Shooter 太空射击
1.控制玩家移动 public float speed = 10f; public float xMin = -6.5f; public float xMax = 6.5f; public float ...
- 易语言.开源(绝地求生多功能盒子)类似LOL盒子
下载地址:https://pan.baidu.com/s/1OXwCjGJODkcZVrCwVixu3Q 成品地址:https://pan.lanzou.com/i0rmdwj
- 最干净的pyinstaller打包成exe应用程序方法
在anaconda环境下进行pyinstaller打包后,程序非常大,70行代码打包后有280MB,这是因为会将conda环境携带的库都打包进去导致的.为了获得更纯净的包环境,我们需要安装纯pytho ...
- Java 打印* 三角形
package anli1; public class sanjiaoxing { public static void main(String[] agrs){ System.out.println ...
- nyoj 题目61 传纸条
传纸条(一) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...
- MPS添加管理设备实例NS的过程
MPS添加管理设备实例NS的过程 MPS添加实例NS设备节点: > show snmp community Done > > add snmp community public al ...
- BZOJ1565 [NOI2009]植物大战僵尸 【最大权闭合子图 + tarjan缩点(或拓扑)】
题目 输入格式 输出格式 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0. 输入样例 3 2 10 0 20 0 -10 0 -5 1 0 0 100 ...
- 【CF Round 439 E. The Untended Antiquity】
time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standa ...
- Codeforces Round #359 (Div. 2) B
B. Little Robber Girl's Zoo time limit per test 2 seconds memory limit per test 256 megabytes input ...
- 去除TB二合一页面弹窗
AdBlock插件 自定义AdBlock ###J_MMREDBOX_MASK 保存