publicclassTest01{publicstaticvoidmain(String[] args){// 访问接口的常量。
System.out.println(D.PI);// 常量不能二次赋值// D.PI = 3.1415928;}}// 定义接口interfaceA{}// 接口支持继承interfaceBextendsA{}// 接口支持多继承(一个接口可以继承多个接口)interfaceCextendsA, B {}// 定义接口interfaceD{// 常量// public static final double PI = 3.1415926; // public static final可以省略double PI =3.1415926;// 接口中随便写一个变量就是常量(省略了 public static final)int k =100;// 抽象方法// public abstract int sum(int a, int b);// public abstract可以省略intsum(int a,int b);// 接口中的方法不能有方法体// 错误:Abstract methods do not specify a body/*
* void M() {
}
*/// 相减的抽象方法intsub(int a,int b);}
publicclassTest01{publicstaticvoidmain(String[] args){// 多态:父类型引用指向子类型对象
A a =newD();//a.m2(); // 编译报错。A接口中没有m2()方法
B b =newD();
C c =newD();// 调用其他接口中的方法,需要转型(接口转型)
B b2 =(B)a;
b2.m2();// 也可以直接向下转型为D
D d =(D)a;
d.m2();
M m =newE();// 经过测试:接口和接口之间在进行强制类型转换的时候,没有继承关系,也可以强转// 但是运行时可能会出现ClassCastException异常// 编译没问题,运行有问题。//K k = (K)m;if(m instanceofK){
K k =(K)m;}}}interfaceK{}interfaceM{}classEimplementsM{}interfaceX{}interfaceY{}//接口和接口支持多继承interfaceZextendsX,Y{}interfaceA{voidm1();}interfaceB{voidm2();}interfaceC{voidm3();}// 一个类实现多个接口classDimplementsA,B,C{// 实现A接口的m1()publicvoidm1(){}// 实现B接口中的m2()publicvoidm2(){
System.out.println("m2 ....");}// 实现接口C中的m3()publicvoidm3(){}}