C#成員的繼承

來源:互聯網
上載者:User

命名空間和類型具有“成員”。通常可以通過限定名來訪問實體的成員。限定名以對實體的引用開頭,後跟一個“.”標記,再接成員的名稱。

類型的成員或者是在該類型中聲明的,或者是從該類型的基類“繼承”的。當類型從基類繼承時,基類的所有成員(執行個體建構函式、解構函式和靜態建構函式除外)都成為衍生類別型的成員。基類中關於成員的可訪問性的聲明不能控制該成員是否可繼承:繼承性適用於任何成員,只要它們不是執行個體建構函式、靜態建構函式或解構函式。然而,在衍生類別中可能不能訪問已被繼承的成員,原因或者是因為其已聲明可訪問性,或者是因為它已被類型本身中的聲明所隱藏。

衍生類別繼承基類的所有成員(除建構函式和解構函式),new用來隱藏基類成員,override用來重寫基類成員方法。然而隱藏和重寫都不能改變一個事實:

基類的所有成員(執行個體建構函式、解構函式和靜態建構函式除外)在衍生類別中一個也不能少。

例如:

Fruit

Private string name

Protected string color

Internal int amount

Public int price

Private void Fn01()

(虛擬成員或抽象成員不能是私人的,所以不能用virtual關鍵字)

Protected (virtual) void Fn02()

Internal (virtual) void Fn03()

Public (virtual) void Fn04()

================================

Apple : Fruit

Private string name

衍生類別中不可見,可以聲明一個同名欄位(不用new關鍵字),兩個欄位各不相干。

Protected string color

衍生類別中可見,聲明一個同名欄位將隱藏它(最好用new)。如果不聲明同名欄位,那麼this.color和base.color指的是同一個值。

Internal int amount               

衍生類別中可見,聲明一個同名欄位將隱藏它(最好用new)。如果不聲明同名欄位,那麼this.amount和base.amount指的是同一個值。

Public int price

衍生類別中可見,聲明一個同名欄位將隱藏它(最好用new)。如果不聲明同名欄位,那麼this.price和base.price指的是同一個值。

Private void Fn01()

虛擬成員或抽象成員不能是私

有的,所以不能用virtual關鍵字

衍生類別中不可見,可以聲明一個同名方法(不用new關鍵字),兩個方法各不相干。

Protected (virtual) void Fn02()

衍生類別中可見,new一個同名方法將隱藏它,override將重寫它

Internal (virtual) void Fn03()

衍生類別中可見,new一個同名方法將隱藏它,override將重寫它

Public (virtual) void Fn04()

衍生類別中可見,new一個同名方法將隱藏它,override將重寫它

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.