VB.Net/Class/Override — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 16:40, 26 мая 2010
Overrides method from super(parent) class
Imports System
Public Class MainClass
Shared Sub Main()
Dim win As New Window(1, 2)
Dim lb As New ListBox(3, 4, "Stand alone list box")
Dim b As New Button(5, 6)
win.DrawWindow( )
lb.DrawWindow( )
b.DrawWindow( )
Dim winArray(3) As Window
winArray(0) = New Window(1, 2)
winArray(1) = New ListBox(3, 4, "List box in array")
winArray(2) = New Button(5, 6)
Dim i As Integer
For i = 0 To 2
winArray(i).DrawWindow( )
Next i
End Sub
End Class
Public Class Window
Public Sub New(ByVal top As Integer, ByVal left As Integer)
Me.top = top
Me.left = left
End Sub
Public Overridable Sub DrawWindow( )
Console.WriteLine("Window: drawing Window at {0}, {1}", top, left)
End Sub
Protected top As Integer
Protected left As Integer
End Class
Public Class ListBox
Inherits Window
Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal contents As String)
MyBase.New(top, left)
listBoxContents = contents
End Sub
Public Overrides Sub DrawWindow( )
MyBase.DrawWindow( )
Console.WriteLine("Writing string to the listbox: {0}", listBoxContents)
End Sub
Private listBoxContents As String " new member variable
End Class "ListBox
Public Class Button
Inherits Window
Public Sub New(ByVal top As Integer, ByVal left As Integer)
MyBase.New(top, left)
End Sub
Public Overrides Sub DrawWindow( )
Console.WriteLine( _
"Drawing a button at {0}, {1}" + ControlChars.Lf, top, Left)
End Sub "DrawWindow
End Class "Button
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