抽象方法與抽象類別的程式範例使用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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 波羅、希夏普2020 的頭像
    波羅、希夏普2020

    希夏普2020的程式天地

    波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()