类初始化与实例化过程
程序员文章站
2022-04-09 15:49:03
定义接口Person 定义父类Father 定义子类Son 执行子类main方法,结果 类初始化过程 类实例化的时候,首先要加载并初始化目标类,初始化过程在程序运行期间只在第一次构建对象时执行一次。 初始化过程加载的是该类所有的static 修饰的 变量、方法、代码块,其执行顺序按照在代码中出现及调 ......
定义接口person
package com.test; public interface person { int test(); }
定义父类father
package com.test; public class father implements person{ private int i = test(); private static int j = cool(); static{ system.out.println("father静态代码块1"); } father(){ system.out.println("father无参构造方法..."); } father(string aa){ system.out.println("father带参构造方法..."); } static{ system.out.println("father静态代码块2"); } { system.out.println("father普通代码块1"); } private static int cool() { system.out.println("father静态赋值方法cool()"); return 0; } @override public int test() { system.out.println("father普通赋值方法test()"); return 0; } }
定义子类son
package com.test; public class son extends father { { system.out.println("son普通代码块1"); } private int i = test(); static{ system.out.println("son静态代码块1"); } private static int j = cool(); { system.out.println("son普通代码块2"); } public son(string aa) { system.out.println("son带参构造方法"); } public son() { system.out.println("son无参构造方法"); } static { system.out.println("son静态代码块2"); } @override public int test(){ system.out.println("son普通赋值 方法test()重写"); return 1; } public static int cool() { system.out.println("son静态赋值 方法cool()"); return 1; } public static void main(string[] args) { son s1 = new son(); system.out.println("==========================================="); son s2 = new son("aa"); system.out.println("==========================================="); father s3 = new son("bb"); } }
执行子类main方法,结果
father静态赋值方法cool() father静态代码块1 father静态代码块2 son静态代码块1 son静态赋值 方法cool() son静态代码块2 son普通赋值 方法test()重写 father普通代码块1 father无参构造方法... son普通代码块1 son普通赋值 方法test()重写 son普通代码块2 son无参构造方法 =========================================== son普通赋值 方法test()重写 father普通代码块1 father无参构造方法... son普通代码块1 son普通赋值 方法test()重写 son普通代码块2 son带参构造方法 =========================================== son普通赋值 方法test()重写 father普通代码块1 father无参构造方法... son普通代码块1 son普通赋值 方法test()重写 son普通代码块2 son带参构造方法
类初始化过程
-
类实例化的时候,首先要加载并初始化目标类,初始化过程在程序运行期间只在第一次构建对象时执行一次。
初始化过程加载的是该类所有的static 修饰的 变量、方法、代码块,其执行顺序按照在代码中出现及调用的先后顺序执行。
类实例化过程
-
类实例化过程在每次构建对象时候都会执行。
实例化过程加载的是该类的所有非static修饰的 变量、代码块,以及它们在加载时候涉及到调用的其它方法,它们按照实例化时在代码中调用的先后顺序执行。
上一篇: iOS---------开发中 weak和assign的区别
下一篇: C# 引用类型和值类型