java类的实例化顺序
- 1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
- 2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
- 3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
- 4. 父类构造方法
- 5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
- 6. 子类构造方法
总结:父类静态成员和静态代码块->子类静态成员和静态代码块->父类非静态成员和非静态代码块->父类构造方法->子类非静态成员和非静态代码块->子类构造方法
父类:
public class A {
public static String a=printStr("父类的静态变量");
public String s = printStr("父类的非静态变量");
static {
printStr("父类的静态块");
}
{
printStr("父类的非静态块");
}
public A(){
printStr("父类构造方法");
}
public static String printStr(String str){
System.out.println(str);
return str;
}
}
子类:
public class B extends A {
public static String b=printStr("子类的静态变量");
public String st = printStr("子类的非静态变量");
static {
printStr("子类的静态块");
}
{
printStr("子类的非静态块");
}
public B(){
printStr("子类的构造方法");
}
//main
public static void main(String[] args) {
new B();
}
}
运行结果:
父类的静态变量
父类的静态块
子类的静态变量
子类的静态块
父类的非静态变量
父类的非静态块
父类构造方法
子类的非静态变量
子类的非静态块
子类的构造方法
java类的实例化顺序的更多相关文章
- java#类的实例化顺序
关于类的实例化,不用弄的那么细致,这里只说单一类,没有其他父类(排除Obejct)的情况.要实例化一个类,需要加载class文件到jvm并且验证通过了是安全的字节码文件. 初始化大致上是按照如下步骤: ...
- Java的类的实例化顺序
Java的类的实例化顺序 父类的静态数据 子类的静态数据 父类的成员变量 父类的构造方法 子类的成员变量 子类的构造方法
- 图示Java类的初始化顺序
Java类的初始化顺序 在开发中,知道Java类的初始化顺序才能让我们更加清楚地掌握程序的执行流程.先把结论贴出来,Java里,从图里的1~6,分别按顺序执行. 以下为代码验证阶段,一共三个类 ...
- 创建java类并实例化类对象
创建java类并实例化类对象例一1.面向对象的编程关注于类的设计2.设计类实际上就是设计类的成员3.基本的类的成员,属性(成员变量)&方法 面向对象思想的落地法则一:1.设计类,并设计类的成员 ...
- Java类的实例化的初始化过程
A a = new A(); new 创建对象过程: 1.类加载 代码验证 2.给对象在内存(堆)中分配空间(给属性赋值): 3.属性赋默认值: byte,short.int,long -&g ...
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始...
很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...
- java类的初始化顺序
在java中,当我们new一个对象时,对象中的成员,初始化块以及构造方法的加载是有一定的顺序的,看下面一副图: 一.单类(无基类)下的初始化顺序: public class Parent { stat ...
- 创建Java类并实例化深入理解
package com.sanguosha.java; import java.util.Scanner;//导入包 public class TestPerson { public static v ...
- 创建Java类并实例化的基本过程
package com.sanguosha.java; /* * 面向对象实现的过程 * 1.创建类并设计类的成员(成员变量即属性and成员方法即方法) * 2.通过类来创建类的对象,也称类的实例化 ...
随机推荐
- Spring Boot2(005):关于代码结构
spring boot 对于工程代码结构并没有特殊得要求,但以下几个有用的最佳实践建议参考参考: 1.不鼓励而且应该避免使用 default 包 没有 package 声明的类被认为是在 defaul ...
- idea下maven项目下spring junit 测试用例
使用idea在编写的类下右键Go->Test或者ctrl+shift+t,点击create new test会在相应目录下创建test类 别写代码如下 @RunWith(value = Spri ...
- 五十三、SAP中创建一个LVC表格
一.我们打开之前的程序,在函数里面创建一个名字为SHOW_DATA_LVCE的函数 二.点击编辑->模式 三.选择'REUSE_ALV_GRID_DISPLAY_LVC' 四.选择调用功能,点击 ...
- Java中的static关键字和new关键字作用介绍
一.static关键字的作用 1.可以用于修改类的成员变量.代码块和类 通过static可以将类的成员声明为静态成员,静态的成员归属于整个类,而不是属于某个对象.无论通过类还是对象访问静态成员,操作的 ...
- sql拆分列 时间拆分 日、月、年
我想 查看今日访问人数 需要分组查询 就得 时间拆分 这两天百度 方法有很多 substring ... 但是 我这一列 是时间类型: 可以直接用 DATEPART() 函数用于返回日期/时间的单独部 ...
- 使用Redux管理React数据流要点浅析
在图中,使用Redux管理React数据流的过程如图所示,Store作为唯一的state树,管理所有组件的state.组件所有的行为通过Actions来触发,然后Action更新Store中的stat ...
- COGS 1489玩纸牌
%%%http://blog.csdn.net/clover_hxy/article/details/53171234 #include<bits/stdc++.h> #define LL ...
- dubbo小教程
dubbo小教程 先给出阿里巴巴dubbo的主页:http://code.alibabatech.com/wiki/display/dubbo/Home-zh 自己的demo下载地址:http://d ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:运算符
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- MarkDown简易教程+语法
一.标题 一个#是一级,两个#是二级,最大六级 二.字体 1.加粗 要加粗的文字左右分别用两个*号包起来 2.斜体 要倾斜的文字左右分别用一个*号包起来 3.斜体加粗 要倾斜和加粗的文字左右分别用三个 ...