多態、繼承---常量的覆蓋和方法的重寫

代碼如下:

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  原因是父類方法調用的是其自身的常量  

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章