淺析概括VB.NET抽象類
編程的人都喜歡用接口,因?yàn)樗梢詫?shí)現(xiàn)若耦合,讓我們的一個(gè)項(xiàng)目的各個(gè)模塊更獨(dú)立,下面我們就簡(jiǎn)單的分析一下關(guān)于VB.NET抽象類與接口方面的知識(shí)吧。抽象類的定義與非抽象類的定義沒什么兩樣. 抽象類包含了從其它類承繼而來的屬性及方法等等.但是,在抽象類中定義的類成員(屬性及方法)是如何與衍生類中的定義元素產(chǎn)生聯(lián)系的呢?在此并沒有復(fù)雜的規(guī)則,但你作出的決定是與你所擁有的類的性能及它將衍生出來的 類所密切相關(guān)。
#T#如果你熟悉接口的相關(guān)知識(shí),你會(huì)認(rèn)為抽象類與它是如此相似。事實(shí)上只是一部份類似。定義僅含有抽象成員的抽象類基本上是與接口的定義相同的,因?yàn)槟阋呀?jīng)規(guī)定衍生類必須執(zhí)行某個(gè)具有專用符號(hào)的成員。另外,抽象類具有其它的功能,是接口無法實(shí)現(xiàn)的,--尤其是在定義非抽象類成員的基本功能薄?BR>
當(dāng)你在認(rèn)為抽象類或是接口都能如常運(yùn)作時(shí),請(qǐng)謹(jǐn)記如下幾點(diǎn):
除了從一個(gè)類(抽象或非抽象) 派生出來,一個(gè)衍生類可以執(zhí)行多個(gè)接口。
從抽象類派生出來的子類同樣能夠執(zhí)行一個(gè)或多個(gè)接口,這要依你的項(xiàng)目而定,你可以只用一個(gè)抽象類或多個(gè)接口,或者抽象類和接口混合使用。VB和.NET 在這項(xiàng)工作上提供了非常大的靈活性.因此你可以通過不同的方式來達(dá)到你想要的結(jié)果.底線是一些項(xiàng)目必須是通過抽象類來實(shí)現(xiàn).VB.NET抽象類也許會(huì)被認(rèn)為是一種非常專業(yè)的編程方法.它可幫程序員減少工作量并且可以生成更簡(jiǎn)便功能更強(qiáng)大的程序.
實(shí)際操作中使用VB.NET抽象類
設(shè)想一下你正在為一家大公司開發(fā)一個(gè)新的員工數(shù)據(jù)庫.你的工作就是監(jiān)督類的執(zhí)行,使雇員的基本情況與管理部門的要求相吻合,同樣, 在區(qū)分公司分支機(jī)構(gòu)的要求時(shí)也提供更大的便利.
基本要求如下:
抽象類里有姓名,雇用時(shí)間等屬性,這些屬性不會(huì)被重載.
因?yàn)榇蠖鄶?shù)雇員來自美國(guó),因此在抽象類里執(zhí)行退休ID,以運(yùn)行社會(huì)保障號(hào)碼.國(guó)外分公司將會(huì)利用不同的方式來鑒別雇員的退休ID,因此該屬性會(huì)在衍生類里重載,以便單個(gè)分支機(jī)構(gòu)分別執(zhí)行.
名稱為補(bǔ)償金的方法不會(huì)引起爭(zhēng)議,然后會(huì)返回一個(gè)含有雇員補(bǔ)償金細(xì)節(jié)的類型對(duì)象.因?yàn)椴煌止径家?guī)定不同的補(bǔ)償金,薪金,傭金,紅利等,因此靈活的執(zhí)行這些對(duì)象是很有必要的,由此會(huì)產(chǎn)生一個(gè)抽象方法.
由此而產(chǎn)生的抽象類的代碼,稱為EmployeeBase,會(huì)在第一欄里顯示。
位于法國(guó)的分公司的程序員用EmployeeBase類作為EmployeeFrance類的基類,與當(dāng)?shù)毓蛦T記錄軟件合作使用。因此,衍生類需要承繼名稱及雇用日期等字段。更多的是,在EmployeeBase 類中的RetirementID成份適合運(yùn)用在法國(guó),因此,新類不會(huì)重載該成份。程序員做的所有這些工作是為了執(zhí)行abstract Compensation member 的重載。
但是在英國(guó), RetirementID 屬性不適用于該地,因此衍生類將會(huì)重載該成員,同樣的也會(huì)重載Compensation 成員。