欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

类初始化与实例化过程

程序员文章站 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修饰的 变量、代码块,以及它们在加载时候涉及到调用的其它方法,它们按照实例化时在代码中调用的先后顺序执行。