Mega Code Archive

 
Categories / VB.Net / Class
 

Use Overridable Function

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