AJPFX關(guān)于多態(tài)的應(yīng)用

要求設(shè)計(jì)一個(gè)方法,要求此方法可以接受A類的任意子類對象,并調(diào)用方法,此時(shí),如果不使用對象多態(tài)性,那代碼肯定會(huì)類似如下

站在用戶的角度思考問題,與客戶深入溝通,找到屯留網(wǎng)站設(shè)計(jì)與屯留網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋屯留地區(qū)。

  1. class A{                    // 定義類A  
  2.     public void Run1(){     // 定義Run1()方法  
  3.         System.out.println("A類----Run1方法") ;  
  4.     }  
  5.     public void Run2(){  
  6.         Run1() ;        // 調(diào)用父類的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類的實(shí)例    B b = new B();    
  28.         Run(new C()) ;  // 傳遞C類的實(shí)例    C c = new C();  
  29.     }  
  30.     public static void Run(B b){  
  31.         b.Run1() ;      // 調(diào)用覆寫父類中的Run1()方法  
  32.     }  
  33.     public static void Run(C c){  
  34.         c.Run1() ;      // 調(diào)用覆寫父類中的Run1()方法  
  35.     }  
  36. }  
復(fù)制代碼

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

  1. class A{                    // 定義類A  
  2.     public void Run1(){     // 定義Run1()方法  
  3.         System.out.println("A類----Run1方法") ;  
  4.     }  
  5.     public void Run2(){  
  6.         Run1() ;        // 調(diào)用父類的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類的實(shí)例,產(chǎn)生向上轉(zhuǎn)移  
  28.         Run(new C()) ;  // 傳遞C類的實(shí)例,產(chǎn)生向上轉(zhuǎn)移      
  29.     }  
  30.     //接收父類對象  
  31.     public static void Run(A a){//相當(dāng)于 A a = new B() & A a = new C()  
  32.         a.Run1() ;      // 調(diào)用覆寫父類中的Run1()方法  
  33.     }  
  34.       
  35. }  
復(fù)制代碼

上代碼中在Run()方法中使用了對象的多態(tài)性,所以可以接收任何子類的對象,這樣無論子類如何增加,Run()方法都不用做任何的改變,因?yàn)榘l(fā)生了對象的向上轉(zhuǎn)型關(guān)系后,調(diào)用的方法一定是被子類覆寫過的方法。

分享文章:AJPFX關(guān)于多態(tài)的應(yīng)用
瀏覽地址:http://muchs.cn/article18/jchcdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、靜態(tài)網(wǎng)站、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)公司、、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)