日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【设计模式】面向对象 - 多态 ( 面向对象 3 要素 | 多态 提升 程序扩展性 | 多态示例 )

發布時間:2025/6/17 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】面向对象 - 多态 ( 面向对象 3 要素 | 多态 提升 程序扩展性 | 多态示例 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、面向對象 3 要素
  • 二、多態 ( 提升程序擴展性 )
  • 三、不使用多態示例
  • 四、使用多態示例
  • 總結





一、面向對象 3 要素



面向對象 333 要素 :

封裝 : 解決 安全性 問題 ; 通過 private , protected , public 修飾方法 , 變量 , 以保證代碼安全性 ;

繼承 : 解決 代碼重用 問題 ; 子類繼承父類 ,

多態 : 解決 程序擴展 問題 ;





二、多態 ( 提升程序擴展性 )



多態有 333 種表現 :

子類 重寫 父類方法 ;

相同方法名 不同參數方法 重載 ;

父類引用 指向 子類對象 ;


面向對象編程時 , 建議 面向接口 編程 ;

如果不使用多態 , 如果 添加新的類 時 , 就需要 修改業務邏輯 , 明顯 違反了開閉原則 ;


面向對象中 , 多態發生的條件 :

  • 子類 繼承 ( 實現 ) 父類 ;
  • 父類引用 指向 子類對象 ;
  • 子類 重寫 父類方法 ;

使用多態后 , JVM 在運行階段 , 才知道要執行哪個類的方法 ;





三、不使用多態示例



業務場景 : 飛行器飛行 , 飛行器有 直升機 和 運輸機 , 每個飛行器都有起飛和降落方法 ;


直升機類 :

public class Helicopter {public void takeOff() {System.out.println("直升飛機 起飛");}public void land() {System.out.println("直升飛機 降落");} }

運輸機類 :

public class TransportPlane {public void takeOff() {System.out.println("運輸機 起飛");}public void land() {System.out.println("運輸機 降落");} }

客戶端 : 分別為 直升機 Helicopter 和 運輸機 TransportPlane 各自定義 111 個方法 ;

public class Client {public static void main(String[] args) {Client client = new Client();client.doFly();client.doFly2();}private void doFly() {Helicopter helicopter = new Helicopter();helicopter.takeOff();System.out.println("飛行");helicopter.land();}private void doFly2() {TransportPlane transportPlane = new TransportPlane();transportPlane.takeOff();System.out.println("飛行");transportPlane.land();} }

運行結果 :



上述示例中 , 如果要添加新的飛行器 , 戰斗機 , 就要定義新的 客戶端 Client 方法 , 修改客戶端的業務邏輯 ;

這顯然違背了 面向對象 777 大設計原則 中的 " 開閉原則 " ;



增加的新的戰斗機類 :

public class Fighter {public void takeOff() {System.out.println("戰斗機 起飛");}public void land() {System.out.println("戰斗機 降落");} }

客戶端修改后的結果 :

public class Client {public static void main(String[] args) {Client client = new Client();client.doFly();client.doFly2();client.doFly3();}private void doFly() {Helicopter helicopter = new Helicopter();helicopter.takeOff();System.out.println("飛行");helicopter.land();}private void doFly2() {TransportPlane transportPlane = new TransportPlane();transportPlane.takeOff();System.out.println("飛行");transportPlane.land();}private void doFly3() {Fighter fighter = new Fighter();fighter.takeOff();System.out.println("飛行");fighter.land();} }

執行結果 :





四、使用多態示例



飛行器接口 :

public interface Aircraft {public void takeOff();public void land(); }

直升飛機 :

public class Helicopter implements Aircraft {@Overridepublic void takeOff() {System.out.println("直升飛機 起飛");}@Overridepublic void land() {System.out.println("直升飛機 降落");} }

運輸機 :

public class TransportPlane implements Aircraft {@Overridepublic void takeOff() {System.out.println("運輸機 起飛");}@Overridepublic void land() {System.out.println("運輸機 降落");} }

客戶端類 :

public class Client {public static void main(String[] args) {Client client = new Client();Aircraft aircraft1 = new Helicopter();Aircraft aircraft2 = new TransportPlane();client.doFly(aircraft1);client.doFly(aircraft2);}private void doFly(Aircraft aircraft) {aircraft.takeOff();System.out.println("飛行");aircraft.land();} }

執行結果 :



添加戰斗機類 , Client 中的相關方法不用修改 ;


添加的戰斗機類 :

public class Fighter implements Aircraft {@Overridepublic void takeOff() {System.out.println("戰斗機 起飛");}@Overridepublic void land() {System.out.println("戰斗機 降落");} }

修改后的客戶端類 :

public class Client {public static void main(String[] args) {Client client = new Client();Aircraft aircraft1 = new Helicopter();Aircraft aircraft2 = new TransportPlane();Aircraft aircraft3 = new Fighter();client.doFly(aircraft1);client.doFly(aircraft2);client.doFly(aircraft3);}private void doFly(Aircraft aircraft) {aircraft.takeOff();System.out.println("飛行");aircraft.land();} }

執行結果 :

總結


多態作用 : 提升程序擴展性 ;

多態 333 種表現 :子類 重寫 父類方法 ; ② 相同方法名 不同參數方法 重載 ; ③ 父類引用 指向 子類對象 ;

多態發生 333 條件 : ① 子類 繼承 ( 實現 ) 父類 ; ② 父類引用 指向 子類對象 ; ③ 子類 重寫 父類方法 ;

總結

以上是生活随笔為你收集整理的【设计模式】面向对象 - 多态 ( 面向对象 3 要素 | 多态 提升 程序扩展性 | 多态示例 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。