Override the Finalize Function
Imports System
Public Class MainClass
Shared Sub Main(ByVal args As String())
Dim circle1, circle2 As Circle
circle1 = New Circle(72, 29, 4.5) ' instantiate objects
circle2 = New Circle(5, 5, 10)
circle1 = Nothing ' mark objects for garbage collection
circle2 = Nothing
System.GC.Collect() ' request garbage collector to execute
End Sub
End Class
Public Class Circle
Inherits Point ' Circle Inherits from class Point
Private mRadius As Double
' default constructor
Public Sub New()
' implicit call to Point constructor occurs here
Radius = 0
Console.WriteLine("Circle constructor: {0}", Me)
End Sub ' New
' constructor
Public Sub New(ByVal xValue As Integer, _
ByVal yValue As Integer, ByVal radiusValue As Double)
' use MyBase reference to Point constructor explicitly
MyBase.New(xValue, yValue)
Radius = radiusValue
Console.WriteLine("Circle constructor: {0}", Me)
End Sub ' New
' finalizer overrides version in class Point
Protected Overrides Sub Finalize()
Console.WriteLine("Circle Finalizer: {0}", Me)
MyBase.Finalize() ' call Point finalizer
End Sub ' Finalize
' property Radius
Public Property Radius() As Double
Get
Return mRadius
End Get
Set(ByVal radiusValue As Double)
If radiusValue > 0 Then
mRadius = radiusValue
End If
End Set
End Property ' Radius
' calculate Circle diameter
Public Function Diameter() As Double
Return mRadius * 2
End Function ' Diameter
' calculate Circle circumference
Public Function Circumference() As Double
Return Math.PI * Diameter()
End Function ' Circumference
' calculate Circle area
Public Overridable Function Area() As Double
Return Math.PI * mRadius ^ 2
End Function ' Area
' return String representation of Circle
Public Overrides Function ToString() As String
' use MyBase reference to return Point String
Return "Center = " & MyBase.ToString() & _
"; Radius = " & mRadius
End Function ' ToString
End Class
Public Class Point
' point coordinate
Private mX, mY As Integer
' default constructor
Public Sub New()
' implicit call to Object constructor occurs here
X = 0
Y = 0
Console.WriteLine("Point constructor: {0}", Me)
End Sub ' New
' constructor
Public Sub New(ByVal xValue As Integer, _
ByVal yValue As Integer)
' implicit call to Object constructor occurs here
X = xValue
Y = yValue
Console.WriteLine("Point constructor: {0}", Me)
End Sub ' New
' finalizer overrides version in class Object
Protected Overrides Sub Finalize()
Console.WriteLine("Point Finalizer: {0}", Me)
MyBase.Finalize() ' call Object finalizer
End Sub ' Finalize
' property X
Public Property X() As Integer
Get
Return mX
End Get
Set(ByVal xValue As Integer)
mX = xValue ' no need for validation
End Set
End Property ' X
' property Y
Public Property Y() As Integer
Get
Return mY
End Get
Set(ByVal yValue As Integer)
mY = yValue ' no need for validation
End Set
End Property ' Y
' return String representation of Point
Public Overrides Function ToString() As String
Return "[" & mX & ", " & mY & "]"
End Function ' ToString
End Class
Related examples in the same category