一个测试接口加载,类加载很好的例子

//---------------------------------------------------------------------------
//-------------------------------程序开始--------------------------------
//---------------------------------------------------------------------------
public class Test {
    public static void main(String[] args) {
        Subclass sb = new Subclass();
    }
}

class Sssuper {
    int i = -1; // for debug can delete
    static {
        System.out.println(1);
    }
    Sssuper(int i) {
        System.out.println(i);
        this.i = i; // for debug can delete
    }
}

class Subclass extends Sssuper implements Interface {
    static {
        System.out.println(2);
    }
    Sssuper su = new Sssuper(4);

    Subclass() {
        super(3);
        //System.out.println(su1.i+1); // for debug can delete
        new Sssuper(5);
    }
}

interface Interface {
    static Sssuper su1 = new Sssuper(0);
}

//---------------------------------------------------------------------------
//-------------------------------程序结束--------------------------------
//---------------------------------------------------------------------------

运行结论:
    根据测试结果,得知在接口Interface中的实例su1并不会在运行时加载,当把//System.out.println(su1.i+1);
    // for debug can delete 放开后su1才开始加载.这个例子可以帮助我们很好地理解“接口、继承,静态块之间的运行关系”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值