位置:首頁(yè) > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# OOP技術(shù) 繼承

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-04

    繼承是OOP最重要的特性之一。任何類都可以從另一個(gè)類繼承,這就是說,這個(gè)類擁有它繼承的類的所有成員。在OOP中,被繼承(也稱為派生)的類稱為父類(也稱為基類)。注意,C#中的對(duì)象僅能直接派生于一個(gè)基類,當(dāng)然基類也可以有自己的基類。

    繼承性可從一個(gè)較一般的基類擴(kuò)展或創(chuàng)建更多的特定類。例如,考慮一個(gè)代表農(nóng)場(chǎng)家畜的類(由80多歲的 資深開發(fā)人員MacDonald在他的家畜應(yīng)用程序中使用)。這個(gè)類名為Animal,擁有EatFood()或Breed()等方法,我們可以創(chuàng)建一個(gè)派生類Cow; Cow支持所有這些方法,也有自己的方法,如Moo()和SupplyMilk()。還可以創(chuàng)建另一個(gè)派生類Chicken,該類有Quck()和LayEgg()方法。

    在UML中,用箭頭表示繼承,如圖所示。


Animal






+EatFood() +Breed()





I


i

Chicken


Cow




+Cluck()

+LayEgg()


+Moo()

+SupplyMilk()

    在繼承一個(gè)基類時(shí),成員的可訪問性就成了一個(gè)重要問題。派生類不能訪問基類的私有成員,但可以訪問其公共成員。不過,派生類和外部的代碼都可以訪問公共成員。這就是說,只使用這兩個(gè)級(jí)別的可訪問性,不能讓一個(gè)成員可由基類和派生類訪問,而不能由外部的代碼訪問。

    為解決這個(gè)問題,C#提供了第三種可訪問性:protected,只有派生類才能訪問protected成員。對(duì)于外部代碼來說,這個(gè)可訪問性與私有成員一樣:外部代碼不能訪問private成員和protected成員。

    除了定義成員的保護(hù)級(jí)別外,我們還可以為成員定義其繼承行為?;惖某蓡T可以是虛擬的,也就是說,成員可以由繼承它的類重寫。派生類可以提供成員的另一種實(shí)現(xiàn)代碼。這種實(shí)現(xiàn)代碼不會(huì)刪除原來的代碼,仍可以在類中訪問原來的代碼,但外部代碼不能訪問它們。如果沒有提供其他實(shí)現(xiàn)方式,通過派生類使用成員的外部代碼就自動(dòng)訪問基類中成員的實(shí)現(xiàn)代碼。


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部