多型 方法的重寫 和 抽象類
1.多型
對於同一個物件,身份不同時,呼叫同一個方法會呈現出不同的狀態。
* 前提是:當父類和子類出現了完全一模一樣的方法。允許的
* 當父類和子類出現相同方法,父類會隱藏子類的方法呼叫。也就是說
* 當我們建立了老虎物件,但是將其看成是動物時。這個時候如果呼叫
* Eat方法,呼叫不是老虎類中的Eat,而是動物類中的Eat方法。這就是
* 隱藏。
如果是有意隱藏,請使用關鍵字 new。
* 一旦在子類方法中加入了new關鍵字,那麼呼叫物件的這個方法時,
總結:只看當前身份,不看真實身份。
2.重寫
一旦物件創建出來之後。呼叫方法
重寫:和隱藏不同的是,一旦物件創建出來之後,呼叫方法
只看真實身份,不看當前身份。
寫法:父類方法必須用virtual關鍵字修飾,表示此方法可以被子類
重寫。如果子類要重寫父類的相同方法,必須使用override關鍵字
只看真實身份,不看當前身份。
必須要有繼承關係。
如果父類允許子類重寫自己的方法,就必須在此方法前加//virtual關鍵字
//如果子類重寫了父類的virtual方法,就必須在方法
//前加上override關鍵字
//如果一個類重寫了父類的方法,也表名自己定義的這個方法
//可以被自己的子類所重寫
3.抽象類
Annotation:在面向物件程式設計中,我們會設計一些模板類,讓其他來繼承。
//1、在抽象類中可以有抽象方法,用abstract關鍵字修飾的方法
//2、在抽象類中可以有普通方法
//3、和普通類不同的是,抽象類不可以例項化
//抽象方法只有方法的簽名,沒有定義(沒有實現過程)
//抽象方法的實現由子類完成
//只要父類的方法被virtual,override或abstract關鍵字修飾,那麼子類就可以重寫這些方法