Class CTest2
Shared Sub Main()
Dim point As New Point(7, 11)
Dim circle As New Circle(22, 8, 3.5)
Dim cylinder As New Cylinder(10, 10, 3.3, 10)
Dim arrayOfShapes As Shape() = New Shape(2) {}
arrayOfShapes(0) = point
arrayOfShapes(1) = circle
arrayOfShapes(2) = cylinder
Console.WriteLine(point.Name & ": " & _
point.ToString() & vbCrLf & circle.Name & ": " & _
circle.ToString() & vbCrLf & cylinder.Name & _
": " & cylinder.ToString())
Dim shape As Shape
For Each shape In arrayOfShapes
Console.WriteLine(shape.Name & ": " & _
shape.ToString() & vbCrLf & "Area = " & _
String.Format("{0:F}", shape.Area) & vbCrLf & _
"Volume = " & String.Format("{0:F}", shape.Volume))
Next
End Sub ' Main
End Class
Public MustInherit Class Shape
Public Overridable Function Area() As Double
Return 0
End Function
Public Overridable Function Volume() As Double
Return 0
End Function
Public MustOverride ReadOnly Property Name() As String
End Class
Public Class Point
Inherits Shape
Private mX, mY As Integer
Public Sub New()
End Sub ' New
Public Sub New(ByVal xValue As Integer, _
ByVal yValue As Integer)
End Sub ' New
Public Overrides Function ToString() As String
Return "[" & mX & ", " & mY & "]"
End Function ' ToString
Public Overrides ReadOnly Property Name() As String
Get
Return "Point"
End Get
End Property ' Name
End Class
Public Class Circle
Inherits Point
Private mRadius As Double
Public Sub New()
End Sub ' New
Public Sub New(ByVal xValue As Integer, _
ByVal yValue As Integer, ByVal radiusValue As Double)
MyBase.New(xValue, yValue)
End Sub ' New
Public Overrides Function ToString() As String
Return "Center= " & MyBase.ToString() & _
"; Radius = " & mRadius
End Function ' ToString
Public Overrides ReadOnly Property Name() As String
Get
Return "Circle"
End Get
End Property ' Name
End Class
Public Class Cylinder
Inherits Circle
Protected mHeight As Double
Public Sub New()
End Sub ' New
Public Sub New(ByVal xValue As Integer, _
ByVal yValue As Integer, ByVal radiusValue As Double, _
ByVal heightValue As Double)
MyBase.New(xValue, yValue, radiusValue)
End Sub ' New
Public Overrides ReadOnly Property Name() As String
Get
Return "Cylinder"
End Get
End Property ' Name
End Class
|