亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

AJPFX關于多態的應用

發布時間:2020-08-08 21:00:19 來源:ITPUB博客 閱讀:101 作者:AJPFX 欄目:編程語言

要求設計一個方法,要求此方法可以接受A類的任意子類對象,并調用方法,此時,如果不使用對象多態性,那代碼肯定會類似如下

  1. class A{                    // 定義類A  
  2.     public void Run1(){     // 定義Run1()方法  
  3.         System.out.println("A類----Run1方法") ;  
  4.     }  
  5.     public void Run2(){  
  6.         Run1() ;        // 調用父類的Run1()方法  
  7.     }  
  8. }  
  9. class B extends A{  
  10.     public void Run1(){     // 覆寫父類中的Run1方法  
  11.         System.out.println("B類----Run1方法") ;  
  12.     }  
  13.     public void Run3(){     // B類特有的方法  
  14.         System.out.println("B類----Run3方法") ;  
  15.     }  
  16. }  
  17. class C extends A{  
  18.     public void Run1(){     // 覆寫父類中的Run1方法  
  19.         System.out.println("C類----Run1方法") ;  
  20.     }  
  21.     public void Run5(){     // C類特有的方法  
  22.         System.out.println("C類----Run5方法") ;  
  23.     }  
  24. }  
  25. public class Demo6{  
  26.     public static void main(String asrgs[]){  
  27.         Run(new B()) ;  // 傳遞B類的實例    B b = new B();    
  28.         Run(new C()) ;  // 傳遞C類的實例    C c = new C();  
  29.     }  
  30.     public static void Run(B b){  
  31.         b.Run1() ;      // 調用覆寫父類中的Run1()方法  
  32.     }  
  33.     public static void Run(C c){  
  34.         c.Run1() ;      // 調用覆寫父類中的Run1()方法  
  35.     }  
  36. }  
復制代碼

以代碼雖然實現要求,但可以發現:如果按照如上方式完成程序,這就相當于產生了一個A類的子類時,Run()方法就要重載一次,則每一次擴充子類都要修改類本身,這樣肯定不太好,那么如果使用對象多態性完成呢?具體代碼如下

  1. class A{                    // 定義類A  
  2.     public void Run1(){     // 定義Run1()方法  
  3.         System.out.println("A類----Run1方法") ;  
  4.     }  
  5.     public void Run2(){  
  6.         Run1() ;        // 調用父類的Run1()方法  
  7.     }  
  8. }  
  9. class B extends A{  
  10.     public void Run1(){     // 覆寫父類中的Run1方法  
  11.         System.out.println("B類----Run1方法") ;  
  12.     }  
  13.     public void Run3(){     // B類特有的方法  
  14.         System.out.println("B類----Run3方法") ;  
  15.     }  
  16. }  
  17. class C extends A{  
  18.     public void Run1(){     // 覆寫父類中的Run1方法  
  19.         System.out.println("C類----Run1方法") ;  
  20.     }  
  21.     public void Run5(){     // C類特有的方法  
  22.         System.out.println("C類----Run5方法") ;  
  23.     }  
  24. }  
  25. public class Demo6{  
  26.     public static void main(String asrgs[]){  
  27.         Run(new B()) ;  // 傳遞B類的實例,產生向上轉移  
  28.         Run(new C()) ;  // 傳遞C類的實例,產生向上轉移      
  29.     }  
  30.     //接收父類對象  
  31.     public static void Run(A a){//相當于 A a = new B() & A a = new C()  
  32.         a.Run1() ;      // 調用覆寫父類中的Run1()方法  
  33.     }  
  34.       
  35. }  
復制代碼

上代碼中在Run()方法中使用了對象的多態性,所以可以接收任何子類的對象,這樣無論子類如何增加,Run()方法都不用做任何的改變,因為發生了對象的向上轉型關系后,調用的方法一定是被子類覆寫過的方法。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华坪县| 元江| 平远县| 寿宁县| 革吉县| 徐水县| 锦屏县| 房山区| 马尔康县| 平远县| 隆回县| 乌拉特前旗| 新密市| 额尔古纳市| 奉贤区| 侯马市| 淮阳县| 陕西省| 濮阳县| 祁东县| 罗城| 道真| 陵川县| 闵行区| 文水县| 陈巴尔虎旗| 德化县| 延津县| 左云县| 嘉定区| 乐亭县| 贵南县| 云龙县| 郑州市| 高邑县| 凤山市| 大冶市| 鄂伦春自治旗| 二手房| 江口县| 新建县|