public class MyTest6 { public static String printWhenInit(String s){ System.out.println(s); return s.substring(s.indexOf(" ")); } public static void main(String[] args){ System.out.println(SubI.iField); //静态的运行时才能确定的常量,这时存有该常量的接口被初始化,其父类不会被初始化 // System.out.println(SubI.iField2); //静态的编译器可以确定的常量,这时三个接口都不会被初始化,原因和类一样 } } interface SuperI { public static final String superField = MyTest6.printWhenInit(" initializing SuperI.superField "); } interface I extends SuperI{ public static final String iField = MyTest6.printWhenInit("initializing I.iField "); public static final String iField2 = "heihie"; } interface SubI extends I { public static final String subField = MyTest6.printWhenInit(" initializing SubI.subField "); } 执行main就能验证子接口I初始化了而父接口SuperI没有初始化(因为如果SuperI初始化了的话会打印initializing SuperI.superField)
点赞 3

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务