抽象方法與抽象類別的程式範例使用VB
我以前曾經簡單介紹過物件導向的抽象(Abstract)這個觀念,抽象簡單來說就是大家都一定會做的事情,只是內容會有所不同。今天簡單的用計算面積這件事情來說明抽象的觀念,使用Visual Basic程式語言為大家說明。
不同的形狀對於計算面積這件事情都會有不同的方法,而計算面積是每一種形狀所都會擁有的方法,所以今天我可以宣告一個抽象類別Shape,並且我定義邊長為10,在抽象類別裡面我定義一個抽象方法Area。
Public MustInherit Class Shape
Public AcrossLine As Double = 10
Public MustOverride Function Area() As Double
End Class
這裡可以看到在宣告抽象類別時使用的關鍵字為MustInherit,字面上的意思是必須繼承,因為抽象類別裡面的抽象方法不能在裡面做定義,抽象方法一定要讓繼承的子類別實作,子類別一定要繼承這個方法,所以宣告抽象類別時使用MustInherit這個字。另外在定義抽象方法時所使用的關鍵字是MustOverride,字面上的意思是必須重新定義,這就是因為抽象方法在父類別中是不會定義的,一定要讓繼承的子類別去定義,所以定義抽象方法用的關鍵字是MustOverride。
接下來我定義Circle和Square這二個類別,繼承父類別Shape,並且分別定義面積計算的方式為PI*邊長*邊長和邊長*邊長。
Public Class Circle
Inherits Shape
Public Overrides Function Area() As Double
Return Math.PI * (AcrossLine ^ 2) '圓形面積算法
End Function
End Class
Public Class Square
Inherits Shape
Public Overrides Function Area() As Double
Return AcrossLine ^ 2 '方形面積算法
End Function
End Class
最後在主程式建立圓形和方形的物件,並且呼叫Area這個方法印出最後的面積。
Module Program
Sub Main(args As String())
Dim circle As New Circle
Dim square As New Square
'印出圓形面積和方形面積
Console.WriteLine("圓形的面積:" + circle.Area().ToString())
Console.WriteLine("方形的面積:" + square.Area().ToString())
End Sub
End Module
最後顯示的結果如下:
圓形的面積:314.1592653589793
方形的面積:100
在程式設計好好善用抽象的觀念,可以讓程式變得精簡並且易於修改,我所提供的這個程式大家可以先照著打一次,在理解了程式以後再自己從頭打一次,多多練習是學好程式的關鍵。
最後提供此範例完整程式碼給大家,如下:
Imports System
Module Program
Sub Main(args As String())
Dim circle As New Circle
Dim square As New Square
'印出圓形面積和方形面積
Console.WriteLine("圓形的面積:" + circle.Area().ToString())
Console.WriteLine("方形的面積:" + square.Area().ToString())
End Sub
End Module
Public MustInherit Class Shape
Public AcrossLine As Double = 10
Public MustOverride Function Area() As Double
End Class
Public Class Circle
Inherits Shape
Public Overrides Function Area() As Double
Return Math.PI * (AcrossLine ^ 2) '圓形面積算法
End Function
End Class
Public Class Square
Inherits Shape
Public Overrides Function Area() As Double
Return AcrossLine ^ 2 '方形面積算法
End Function
End Class
延伸閱讀
[物件導向]抽象(Abstract) 2019-4-18
留言列表