Mega Code Archive

 
Categories / VB.Net / Class
 

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