深入理解多態 (1)
1.
1 public abstract class Birds{ 2 3 //什麽樣的方法是抽象方法 4 5 public abstract void Fly(); 6 7 8 }
public class YZ:Birds{ public override void Fly(){ Console.WriteLine("........."); } }
2.來解釋抽象方法是怎樣的
①如果一個類中用abstract修飾,該類是抽象類
②抽象類中可以有非抽象類方法
③抽象方法不能有方法體,連{}都能有,以分號結束
④如果一個類繼承抽象類,必需重寫抽象類中的所有抽象方法
⑤抽象方法必須位於抽象類中
⑥抽象類不能是靜態類或者是封裝類
⑦抽象類不能實例化
3.用虛方法實現多態的基本步驟如下:
①子類重寫父類的虛方法,其中有兩種方式.
創建父類對象,用子類對象實例化這個父類對象,
把父類類型作為形參類型,它的子類對象作為實參傳入
②運行時,根據實際創建對象的類型決定執行哪個方法
4.虛方法和抽象方法的區別
_ ______________________________|___________________________
虛方法 | 抽象方法
_______________________________ |____________________________
用virtual修飾 | 用abstract修飾
_______________________________ |______________________________
要有方法體,即使是一個分號 | 不允許有方法體
_______________________________ |______________________________
可以被子類override | 必須被子類override
_______________________________ | ________________________________
除了密封類外都可以被定義 | 只有在抽象類中定義
_______________________________ |________________________________
註:使用抽象方法和虛方法都可以實現多態性
5.面向對象編程中三個非常重要的特性---------封裝,繼承,多態
最後總結:
①封裝:保證對象自身數據的完整性和安全性
②繼承:建立類之間的關系,實現代碼復用,方便系統的擴展
③多態:相同方法的調用可實現不同的實現方式
6.裏式替換原則:
子類對象可以代替父類對象;反過來,父類對象不能代替子類對象
深入理解多態 (1)