NEW 繼承類中的一個方法可能會與基類中的方法重名,為消除警告,可以在前面加上new 關鍵字
class Mammal { public void Talk() { } } class Horse:Mammal { new public void Talk() { } }
virtual 故意設計成被重寫的方法稱為虛方法,繼承中override(重寫)基類中的一個方法,此方法必須為virtual方法,而一個override方法將隱式地稱為virtual方法,即如果以此派生類為基類再次派生時可以對此override方法進行重寫,不允許virtual或者override一個private方法。
protectted 派生類與基類之間存在一種緊密聯系,我們會允許派生類訪問基類中的部分成員,而禁止不屬於這個繼承層次結構的類訪問這些成員,在這種情況下可以使用protected關鍵字來標記成員
擴展方法 static&this 在某些情況下為了添加新的行為,繼承不一定是最恰當的方案,尤其是我們希望快速擴展一個類型,同時不影響現有代碼的時候。擴展方法必須是在靜態類中定義的,而且要擴展的類型必須是方法中的第一個參數並且用this關鍵字取修飾。
static class Util { public static int Negate(this int i) { return -i; } }
Abstract 為了明確聲明不允許創建某個類的實例,必須將那個類顯式地聲明為抽象類,抽象類試用於一些通用類,這些類可能是某些派生類的基類,但使用時又不必要實例化。抽象類可以包含抽象方法,抽象方法類似於virtual方法,但它不包含方法主體,必須在派生類中重寫(override)方法。
abstract class GrazingMammal:Mammal, IGrazable { abstract void DigestGrass(); }
sealed 密封類關鍵字,為防止一個類作為基類被繼承,可以使用sealed關鍵字密封一個類,防止其被繼承。結構(struct)隱式密封,永遠不能從一個結構派生。sealed只能密封一個override方法(sealed override進行聲明)。
對比
interface 引入一個方法的名稱
virtual方法是方法的第一個實現
override方法是方法的另一個實現
sealed方法是方法的最后一個實現