物件導向程式設計入門(Object-Oriented Programming,OOP) for Visual Basic(六)--抽象(Abstract)Class

抽象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
MustInherit Class House

    MustOverride Function Window(ByVal name As String, ByVal size As String, ByVal color As String, ByVal style As String) As String
    MustOverride Function Door(ByVal name As String, ByVal size As String, ByVal color As String, ByVal style As String) As String
    MustOverride Sub Floor(ByVal floors As Integer)

End Class
定義房子必須要有窗戶、門、樓層。,窗戶有商品名稱(name)、大小(size)、顏色(color)、樣式(style)等屬性。門及樓層類推。

然後我們新增一個建案要使用的Class檔案Diamond.vb,然後繼承House Class,當你打上關鍵字Inherits House後,Visual Studio會自動帶出抽象Class中所有的抽象方法,。
Diamond.vb
Public Class Diamond
    Inherits House

    Public Overrides Function Door(ByVal name As String, ByVal size As String, ByVal color As String, ByVal style As String) As String

    End Function

    Public Overrides Sub Floor(ByVal floors As Integer)

    End Sub

    Public Overrides Function Window(ByVal name As String, ByVal size As String, ByVal color As String, ByVal style As String) As String

    End Function
End Class

注意,我們必須實作所有抽象方法,如本身又包含其他抽象方法,或沒有實作所有繼承來的抽象方法,則此Class還是必須以MustInherit關鍵字修飾,因為它本身還是抽象Class,因此無法被用來建立Object。抽象Class在你需要建立Class樣版時會很有用。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。