代碼如下:
package pkginterface.inheritance;
public class InterfaceInheritance {
public static void main(String[] args) {
Operator[] array={new P1(),new P2(),new P3(),new P4(),new P5(),new P6()}; //多態的一種體現
for(int i=0;i<array.length;i++)
array[i].play();
}
}
interface Operator{ //接口
public static final int MODE=1;
void play();
}
class P1 implements Operator{ //實現
public void play(){System.out.println("P1 Mode-"+MODE);}
}
class P2 implements Operator{
public static final int MODE=2;
public void play(){System.out.println("P2 Mode-"+MODE);}
}
class P3 extends P1{ //繼承
public static final int MODE=3;
}
class P4 extends P2{
public void play(){System.out.println("P4 Mode-"+MODE);}
}
class P5 implements Operator{
int MODE=5;
public void play(){System.out.println("P5 Mode-"+MODE);}
}
class P6 implements Operator{
String MODE="6";
public void play(){System.out.println("P6 Mode-"+MODE);}
}
結果:
P1 Mode-1
P2 Mode-2
P1 Mode-1
P4 Mode-2
P5 Mode-5
P6 Mode-6
出現上述結果應該明白的幾個點:
1)實現接口的類,其擁有接口中定義的常量和方法的使用權限(注意:接口中不能定義私有變量)
2)繼承 子類繼承父類的方法和屬性(不包含私有方法和私有變量)
3)方法的調用順序 如果子類含有和父類相同的方法,先調用子類的方法,然後調用父類的方法(方法的重寫)
4)static 定義的變量屬於類屬性,子類不進行集成
注:p3 處出現【P1 Mode-1】由於繼承 p3 調用父類方法, 輸出model 爲1 原因是父類方法調用的是其自身的常量