[VB.NET]抽象類別與抽象方法

何時該使用抽象方法?

'抽象類別與抽象方法
'包含抽象方法的類別必須宣告為抽象類別
Public MustInherit Class AbstractClass
    '當您定義類別時,可以僅宣告方法名稱而不實作當中的邏輯,這樣的方法稱之為「抽象方法」
    '定義抽象方法 
    Public MustOverride Function Cup(ByRef shape As String) As String
    ''一般的方法
    Public Function Teapot(ByRef shape As String) As String
        Return "茶壺的形狀是" & shape & "形"
    End Function
End Class
Public Class TestAbstract1
    '繼承AbstractClass這個抽象類別
    Inherits AbstractClass
    '強制必須實作Cup
    Public Overrides Function Cup(ByRef shape As String) As String
        Return "茶杯的形狀是" & shape & "形"
    End Function
End Class
Public Class TestAbstract2
    '繼承AbstractClass這個抽象類別
    Inherits AbstractClass
    '強制必須實作Cup
    Public Overrides Function Cup(ByRef shape As String) As String
        Return "咖啡杯的形狀是" & shape & "形"
    End Function
End Class
Public Class TestClass
    Public Sub Test()
        Dim t1 As String
        Dim t2 As String
        Dim Sh As New TestAbstract1
        t1 = Sh.Cup("圓")
        t2 = Sh.Teapot("方")
        '如此會印出t1=茶杯的形狀是圓形,t2=茶壺的形狀是方形
        Dim Sh2 As New TestAbstract2
        t1 = Sh2.Cup("圓")
        t2 = Sh2.Teapot("方")
        '如此會印出t1=咖啡杯的形狀是圓形,t2=茶壺的形狀是方形
    End Sub
End Class

何時該使用抽象方法? 當你要求實作一個方法,但是方法的內容未定 即在父類別時先給此方法做一個規範 再由繼承的Class去實作 如此範例 我要做一個杯子Cup 但是我不確定是哪種杯子 我在父類別規範有個叫Cup的方法 讓繼承的子類別去作出茶杯或咖啡杯