当前位置: 移动技术网 > IT编程>开发语言>Java > 类初始化与实例化过程

类初始化与实例化过程

2019年07月09日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网