Class VB.Net

Imports System
Public Class MainClass
    Shared Sub Main(ByVal args As String())
      ' instantiate object of class Cylinder
      Dim cylinder As New Cylinder(12, 23, 2.5, 5.7)
      ' properties get initial x-y coordinate, radius and height
      Console.WriteLine( "X coordinate is " & cylinder.X & vbCrLf & _
         "Y coordinate is " & cylinder.Y & vbCrLf & "Radius is " & _
         cylinder.Radius & vbCrLf & "Height is " & cylinder.Height )
      ' properties set new x-y coordinate, radius and height
      cylinder.X = 2
      cylinder.Y = 2
      cylinder.Height = 10
      cylinder.Radius = 4.25
      ' get new x-y coordinate and radius
      Console.WriteLine( "The new location, radius " & _
         "and height of cylinder are" & vbCrLf & "Center = [" & _
         cylinder.ToString() )
         
      ' display Cylinder's diameter
      Console.WriteLine( "Diameter is " & _
         String.Format("{0:F}", cylinder.Diameter()) )
      ' display Cylinder's circumference
      Console.WriteLine( "Circumference is " & _
         String.Format("{0:F}", cylinder.Circumference()) )
      ' display Cylinder's area
      Console.WriteLine("Area is " & _
         String.Format("{0:F}", cylinder.Area()) )
      ' display Cylinder's volume
      Console.WriteLine( "Volume is " & _
         String.Format("{0:F}", cylinder.Volume()) )
    End Sub
End Class
Public Class Cylinder
   Inherits Circle
   Private mHeight As Double
   ' default constructor
   Public Sub New()
      Height = 0
   End Sub ' New
   ' four-argument constructor
   Public Sub New(ByVal xValue As Integer, _
      ByVal yValue As Integer, ByVal radiusValue As Double, _
      ByVal heightValue As Double)
      ' explicit call to Circle constructor
      MyBase.New(xValue, yValue, radiusValue)
      Height = heightValue ' set Cylinder height
   End Sub ' New
   ' property Height
   Public Property Height() As Double
      Get
         Return mHeight
      End Get
      ' set Cylinder height if argument value is positive
      Set(ByVal heightValue As Double)
         If heightValue >= 0 Then
            mHeight = heightValue
         End If
      End Set
   End Property ' Height
   ' override method Area to calculate Cylinder area
   Public Overrides Function Area() As Double
      Return 2 * MyBase.Area + MyBase.Circumference * mHeight
   End Function ' Area
   ' calculate Cylinder volume
   Public Function Volume() As Double
      Return MyBase.Area * mHeight
   End Function ' Volume
   ' convert Cylinder to String
   Public Overrides Function ToString() As String
      Return MyBase.ToString() & "; Height = " & mHeight
   End Function ' ToString
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
   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
   End Sub ' New
   ' 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 representation
      Return "Center = " & MyBase.ToString() & _
         "; Radius = " & mRadius
   End Function ' ToString
End Class
Public Class Point
   ' implicitly Inherits Object
   ' point coordinate
   Private mX, mY As Integer
   ' default constructor
   Public Sub New()
      ' implicit call to Object constructor occurs here
      X = 0
      Y = 0
   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
   End Sub ' New
   ' property X
   Public Property X() As Integer
      Get
         Return mX
      End Get
      Set(ByVal value As Integer)
         mX = value
      End Set
   End Property ' X
   ' property Y 
   Public Property Y() As Integer
      Get
         Return mY
      End Get
      Set(ByVal value As Integer)
         mY = value
      End Set
   End Property ' Y
   ' return String representation of Point
   Public Overrides Function ToString() As String
      Return "[" & mX & ", " & mY & "]"
   End Function ' ToString
End Class