簡(jiǎn)單講述VB.NET多重繼承
VB.NET有很多值得學(xué)習(xí)的地方,這里我們主要介紹VB.NET多重繼承,包括介紹USPresident能夠衍生自多個(gè)基類等方面。
VB.NET多重繼承
我注意到了一個(gè)情況,那就是C#允許多重繼承(multiple inheritance),但是在VB.NET里我只能使用深層繼承(deep inheritance)。在VB.NET里能夠使用多重繼承嗎?或者說(shuō)VB.NET的程序員就只能如此了?
在提出這個(gè)問(wèn)題的時(shí)候,我可能已經(jīng)在考慮C++了。C++能夠支持多重繼承,但是C#和VB.NET都不支持。它們走了和Java相同的路線,也就是說(shuō)它們只允許來(lái)自單基類(single base class)的繼承。繼承關(guān)系表示兩個(gè)類之間的IS A關(guān)系。如果考慮到一個(gè)類有可能通過(guò)多IS A 關(guān)系被分類,那么缺少多重繼承就成為了這種可能性的一個(gè)因素。讓我們以Employee、USPresident和USCitizen這三個(gè)類為例子,它們之間的關(guān)系是:USPresident IS A Employee、USPresident IS A USCitizen
在C++里,USPresident能夠衍生自多個(gè)基類;而在.NET的語(yǔ)言里,它就不能這樣。
如果VB.NET多重繼承得到了支持,那么USPresident就會(huì)同時(shí)繼承自Employee和USCitizen。但是在.NET的語(yǔ)言里,你必須運(yùn)用接口來(lái)表示多重IS A關(guān)系。就和Java一樣,一個(gè)類能夠繼承自一個(gè)基類,而一個(gè)類也能夠?qū)崿F(xiàn)多個(gè)接口。
根據(jù).NET框架的文檔(C#語(yǔ)言規(guī)范),接口(interface)這個(gè)關(guān)鍵字會(huì)聲明參考類型擁有抽象成員。在本文里,成員(members)這個(gè)術(shù)語(yǔ)表示一個(gè)方法、屬性,或者索引符;而抽象(abstract)這個(gè)術(shù)語(yǔ)表示沒(méi)有提供實(shí)現(xiàn)。在創(chuàng)建接口的時(shí)候,習(xí)慣的(命名)方法是在接口名稱之前加上字母 I。盡管你可以忽略這個(gè)習(xí)慣,但是你會(huì)發(fā)現(xiàn)遵守這個(gè)習(xí)慣會(huì)讓區(qū)別基類和接口變得尤其簡(jiǎn)單。在Java里,開(kāi)發(fā)人員習(xí)慣在接口(名稱)的后面加上able。從個(gè)人的角度來(lái)看,我喜歡把這些技巧用在我自己的接口上。用來(lái)描述類和接口之間關(guān)系的術(shù)語(yǔ)有:我們用“x繼承自y類”來(lái)表示繼承;用“x實(shí)現(xiàn)y接口”來(lái)表示接口的關(guān)系。冒號(hào)(:)是用于實(shí)現(xiàn)接口的操作符。
繼承代碼有下列形式:
VB.NET
- Class Derived Inherits Base
C#.NET
- Class Derived: Base
【編輯推薦】