Class VB.Net

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