public class MyTest5 {
public static void main(String[] args){
System.out.println(MyChild5.b);
System.out.println(MyChild6.thread);
}
}
interface MyParent5 {
public static final int a = 5;
// public static final int a = new Random().nextInt(2); 如果删掉MyParent5的class文件会报错
public static Thread thread = new Thread(){
{
// 运行之后不会输出,说明接口没有初始化
System.out.println("MyParent5 invoked");
}
};
}
class MyChild5 implements MyParent5 {
public static int b = 5;
}
运行会发现不会输出MyParent5 invoked 初始化时并不会初始化父接口,当一个类被初始化的时候,它所实现的接口是不会被初始化的
interface MyGrandpa5{
public static Thread thread = new Thread(){
{
// 运行之后不会输出,说明接口没有初始化
System.out.println("MyGrandpa5 invoked");
}
};
}
interface MyParent5 extends MyGrandpa5{
public static Thread thread = new Thread(){
{
// 运行之后不会输出,说明接口没有初始化
System.out.println("MyParent5 invoked");
}
};
}
运行执行不会有文字输出
public class MyTest5 {
public static void main(String[] args){
System.out.println(MyParent5_1.thread);
}
}
interface MyGrandpa5_1{
public static Thread thread = new Thread(){
{
// 运行之后不会输出,说明接口没有初始化
System.out.println("MyGrandpa5_1 invoked");
}
};
}
interface MyParent5_1 extends MyGrandpa5_1{
public static Thread thread = new Thread(){
{
// 运行之后不会输出,说明接口没有初始化
System.out.println("MyParent5_1 invoked");
}
};
}
只会输出MyParent5_1 invoked,初始化一个接口的时候并不会初始化他的父接口