Java继承和静态-加载顺序
来源:互联网 发布:学生资助学生数据重复 编辑:程序博客网 时间:2024/06/04 00:22
class A { static int cnt = 0; static { System.out.println("a()"); } int a = 1; A() { System.out.println("A()"); System.out.println(cnt); }}class B extends A { static { System.out.println("b()"); } int b = 10; B() { System.out.println("B()"); cnt++; System.out.println(cnt); }}class C extends B { static { System.out.println("c()"); } int c = 1000; C() { cnt++; System.out.println("C()"); System.out.println(cnt); }}class Demo { public static void main(String[] args) { C c1 = new C(); System.out.println(); B b1 = new B(); System.out.println(); A a1 = new A();}}
输出结果
static静态的特性是只加载一次,构造一个类对象时,先按照父类(最原始的父类开始依次向下)-子类的顺序先加载类,类的成员变量和方法,这里的类方法为静态,所以在下面构造对象时,不会再加载,只加载一次。
加载完模板后,还是按照这个顺序调用构造函数,没有特别指明则是调用默认的。
注意这里的cnt在A的构造函数上没有自加,凡是调用B和C的构造函数,都会自加,调用父类也同样
0 0
- Java继承和静态-加载顺序
- java中静态块和静态变量的加载顺序
- java 继承类加载顺序
- Java 继承加载顺序 以及 多态中变量和方法
- java静态变量加载顺序
- JAVA中代码顺序,静态块 静态变量,加载顺序!
- 关于Java的静态块和和非静态块(构造块)的加载顺序
- Java中的继承关系的加载顺序
- 再探Java中的继承加载顺序
- 块,静态块,子类,父类,继承加载顺序
- Java静态代码块和静态方法的区别/类加载顺序
- java继承中父类和子类静态、非静态代码块,构造函数,静态方法的执行顺序
- java 类的加载、链接和初始化(静态属性的加载顺序)
- Java继承和初始化顺序
- java单例静态变量加载顺序
- Java的继承及继承中类的加载顺序
- Java的继承及继承中类的加载顺序
- java父类子类中静态块非静态块构造方法的执行顺序和继承
- 如何在BIGEMAP中打开excel、txt、dat文件
- Java新建目录、新建文件、删除文件、删除文件夹、删除文件夹里面的所有文件、复制整个文件夹内容
- mysql cluster集群搭建
- 最详细的quartz表达式解释
- PLSQL 自律型TRANSACTION 1
- Java继承和静态-加载顺序
- Oracle Flashback Drop 测试
- 预处理编译汇编链接各步骤详解
- KiCad设计PCB-42-把PCB文件下单给工厂、电路板的加工制作
- 算法训练 寻找数组中最大值
- yii2框架安装(basic)
- R 语言 optim 使用
- centos7安装指定版本docker且使用本地docker 仓库
- mysql5.5.31 log0log.c中log_write_up_to 函数代码