c# 繼承以及接口抽象類中的關鍵字


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方法是方法的最后一個實現


免責聲明!

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



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