c#之父類引用指向子類對象


父類引用變量引用子類時可以調用子類覆蓋的方法。

舉個例子:

假設有類Cat,類Dog,類Duck。。。他們都有一個繼承自父類Animal的方法eat(),各自覆蓋了這個方法,因為貓狗鴨吃相不同

現在。我有另一類,里面有個方法處理各種動物的吃相all_eat()

當然你可以這么寫:

// 需要用到某個類型時給其創建對象
public  Cat cat =  null ;
public  Dog dog =  null ;
public  Duck ducl =  null ;
public  void  all_eat(){
     if (cat!= null ){
         cat.eat();
     }
     if (dog!= null ){
         dog.eat();
     }
     if (duck!= null ){
         duc.eat();
     }
}

這樣寫是不是比較麻煩,如果類型有十幾個甚至更多呢?

所以用多態可以這么寫:

     // 你可以把 Cat, Dog, Duck 任意一個的對象作為參數傳進來
     // 因為他們都是Animal的子類,並且接下來animal.eat()會
     // 根據實際對象的類型去調用相應的eat()方法。這就是多態
     animal.eat();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM