抽象Class
抽象Class包含了一個以上的
抽象方法,這些方法只提供「
函數名稱與
參數設定」,並且
由繼承的衍生Class實作。衍生Class必須實作
所有抽象Class的抽象方法,否則本身將成為另一個抽象Class。抽象Class本身無法產生Object。
前面我們提到Class本身像藍圖,但這裡的抽象Class是藍圖中的藍圖,以房子為例,抽象Class只定義房子必須要有窗戶、門、樓層…此類大項目,,但細節類的實作,例如窗戶的大小、樣式、顏色…由衍生Class來實作即可。如果基礎Class又稱父Class,那我們把抽象Class稱為祖Class好了。
抽象Class範例
我們新增一個抽象Class檔案House.vb,然後定義最上層必須的架構。注意第一行必須是
MustInherit Class House,而不是Public Class House,而其中抽象方法必須使用
MustOverride關鍵字修飾:
House.vb
3 | MustOverride Function Window( ByVal name As String , ByVal size As String , ByVal color As String , ByVal style As String ) As String |
4 | MustOverride Function Door( ByVal name As String , ByVal size As String , ByVal color As String , ByVal style As String ) As String |
5 | MustOverride Sub Floor( ByVal floors As Integer ) |
定義房子必須要有窗戶、門、樓層。,窗戶有商品名稱(name)、大小(size)、顏色(color)、樣式(style)等屬性。門及樓層類推。
然後我們新增一個建案要使用的Class檔案Diamond.vb,然後繼承House Class,當你打上關鍵字Inherits House後,Visual Studio會自動帶出抽象Class中
所有的抽象方法,。
Diamond.vb
04 | Public Overrides Function Door( ByVal name As String , ByVal size As String , ByVal color As String , ByVal style As String ) As String |
08 | Public Overrides Sub Floor( ByVal floors As Integer ) |
12 | Public Overrides Function Window( ByVal name As String , ByVal size As String , ByVal color As String , ByVal style As String ) As String |
注意,我們必須實作所有抽象方法,如本身又包含其他抽象方法,或沒有實作所有繼承來的抽象方法,則此Class還是必須以MustInherit關鍵字修飾,因為它本身還是抽象Class,因此無法被用來建立Object。抽象Class在你需要建立
Class樣版時會很有用。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。