C#繼承

來源:互聯網
上載者:User

標籤:

本人在於鞏固基礎知識,高手可以繞道

我們先來看看微軟中關於繼承的敘述:類可以從其他類中繼承。這是通過以下方式實現的:在聲明類時,在類名稱後放置一個冒號,然後在冒號後指定要從中繼承的類(即基類)

public class A{    public A() { }}public class B : A{    public B() { }}

C#的繼承與 C++ 等語言一個重要的不同,就是只能從一個類中繼承,這是開發人員在權衡了從多個類C#繼承的優勢與劣勢作出的結果。不過,可以從介面繼承。另外,繼承可傳遞。

也可以在繼承其他類的同時繼承多個介面例如:

public class ClassB : ClassA,Interface1,Interface2

如果基類成員是protected那麼只有繼承他的子類可以訪問,如果基本是sealed 那麼表示他不可以被繼承

也可以繼承一個抽象類別

 public abstract class ClassC
public class ClassD:ClassC

 

C#繼承中的重寫

  • virtual 用在基類中,指定一個虛方法(屬性),表示這個方法(屬性)可以重寫。
  • override 用在衍生類別中,表示對基類虛方法(屬性)的重寫。

以上的基類和衍生類別都是相對的。B 是 C 的基類,也可以是 A 的衍生類別,B 中既可以對 A 中的 virtual 虛方法用 override 重寫,也可以指定 virtual 虛方法供 C 重寫。

不能重寫非虛方法或靜態方法。重寫的基方法必須是 virtual、abstract 或 override 的。為什麼 override 也可以重寫呢?因為基類中的 override 實際上是對基類的基類進行的重寫,由於繼承可傳遞,所以也可以對基類中 override 的方法進行重寫。

  • override 聲明不能更改 virtual 方法的可訪問性。override 方法和 virtual 方法必須具有相同的存取層級修飾符。 

不能使用修飾符 new、static、virtual 或 abstract 來修改 override 方法。

  • 重寫屬性聲明必須指定與繼承屬性完全相同的存取修飾詞、類型和名稱,並且被重寫的屬性必須是 virtual、abstract 或 override 的。
public class ClassA    {              public virtual void MethodA()//virtual關鍵詞表示這個方法可以重寫        {            Console.WriteLine("this is ClassA");        }    }
public class ClassE:ClassA    {        public override void MethodA()        {            base.MethodA();//這個可以不要
//下面就是你想要重寫的部分 Console.WriteLine("this is ClassE"); } }
  static void Main(string[] args)        {            ClassE e = new ClassE();            e.MethodA();        }


ClassE繼承了ClassA 同時也繼承了他所有的成員包括這個虛擬方法,在ClassE中,我們重寫了這個虛擬方法,添加新的東西,最後調用,調用中先執行基類的虛擬方法,然後執行你需要的重寫的部分

 

public ClassA(string field)        {            FieldA = field;                  }
public ClassE(string field):base(field)        {            FieldA = field;        }

    public override void MethodA()
    {

       Console.WriteLine(base.FieldA);
    }

 
   ClassE e = new ClassE("demo");            e.MethodA();

最後會輸出一個: demo

子類建構函式繼承父類時首先會調用父類的建構函式

C#繼承

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.