VB.Net/Class/Constructor
Содержание
Call base constructor
Imports System
Public Class MainClass
Shared Sub Main()
Dim w As New Window(5, 10)
w.DrawWindow( )
Dim lb As New ListBox(20, 30, "Hello world")
lb.DrawWindow( )
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 "New
Public Sub DrawWindow( )
Console.WriteLine("Drawing Window at {0}, {1}", top, left)
End Sub
Private top As Integer
Private left As Integer
End Class
Public Class ListBox
Inherits Window
Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal theContents As String)
MyBase.New(top, left) "
mListBoxContents = theContents
End Sub
Public Shadows Sub DrawWindow( )
MyBase.DrawWindow( )
Console.WriteLine("Writing string to the listbox: {0}", mListBoxContents)
End Sub
Private mListBoxContents As String
End Class
Class with two constructors
Imports System
Public Class MainClass
Shared Sub Main()
Dim currentTime As DateTime = DateTime.Now
Dim time1 As New Time(currentTime)
time1.DisplayCurrentTime( )
Dim theHour As Integer = time1.Hour
Console.WriteLine("Retrieved the hour: {0}", _
theHour)
theHour += 1
time1.Hour = theHour
Console.WriteLine("Updated the hour: {0}", _
time1.Hour)
End Sub
End Class
Public Class Time
Private mYear As Integer
Private mMonth As Integer
Private mDayOfMonth As Integer
Private mHour As Integer
Private mMinute As Integer
Private mSecond As Integer
Property Hour( ) As Integer
Get
Return mHour
End Get
Set(ByVal Value As Integer)
mHour = Value
End Set
End Property
" public accessor methods
Public Sub DisplayCurrentTime( )
Console.WriteLine( _
"{0}/{1}/{2} {3}:{4}:{5}", _
mMonth, mDayOfMonth, mYear, Hour, mMinute, mSecond)
End Sub "DisplayCurrentTime
" constructors
Public Sub New(ByVal dt As DateTime)
mYear = dt.Year
mMonth = dt.Month
mDayOfMonth = dt.Day
mHour = dt.Hour
mMinute = dt.Minute
mSecond = dt.Second
End Sub "New
Public Sub New( _
ByVal mYear As Integer, _
ByVal mMonth As Integer, _
ByVal mDayOfMonth As Integer, _
ByVal mHour As Integer, _
ByVal mMinute As Integer, _
ByVal mSecond As Integer)
Me.mYear = mYear
Me.mMonth = mMonth
Me.mDayOfMonth = mDayOfMonth
Me.Hour = mHour
Me.mMinute = mMinute
Me.mSecond = mSecond
End Sub "New
End Class "Time
Constructor with parameters
Imports System
Public Class MainClass
Shared Sub Main()
Dim currentTime As DateTime = DateTime.Now
Dim time1 As New Time(currentTime)
time1.DisplayCurrentTime( )
Dim time2 As New Time(2005, 11, 18, 11, 3, 30)
time2.DisplayCurrentTime( )
End Sub
End Class
Public Class Time
Private year As Integer
Private month As Integer
Private dayOfMonth As Integer
Private hour As Integer
Private minute As Integer
Private second As Integer
Public Sub DisplayCurrentTime( )
Console.WriteLine( _
"{0}/{1}/{2} {3}:{4}:{5}", _
month, dayOfMonth, year, hour, minute, second)
End Sub
Public Sub New(ByVal dt As DateTime)
year = dt.Year
month = dt.Month
dayOfMonth = dt.Day
hour = dt.Hour
minute = dt.Minute
second = dt.Second
End Sub
Public Sub New( _
ByVal year As Integer, _
ByVal month As Integer, _
ByVal dayOfMonth As Integer, _
ByVal hour As Integer, _
ByVal minute As Integer, _
ByVal second As Integer)
Me.year = year
Me.month = month
Me.dayOfMonth = dayOfMonth
Me.hour = hour
Me.minute = minute
Me.second = second
End Sub
End Class
Init Member Variables through Constructor
Imports System
Public Class MainClass
Shared Sub Main(ByVal args As String())
Dim timeObject As New Time(2005, 3, 25, 9, 35, 20)
timeObject.DisplayCurrentTime( )
End Sub
End Class
Public Class Time
Private Year As Integer
Private Month As Integer
Private Day As Integer
Private Hour As Integer
Private Minute As Integer
Private Second As Integer
" Public methods
Public Sub DisplayCurrentTime( )
System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}", _
Month, Day, Year, Hour, Minute, Second)
End Sub "DisplayCurrentTime
" Constructor
Public Sub New(ByVal theYear As Integer, ByVal theMonth As Integer, _
ByVal theDate As Integer, ByVal theHour As Integer, _
ByVal theMinute As Integer, ByVal theSecond As Integer)
Year = theYear
Month = theMonth
Day = theDate
Hour = theHour
Minute = theMinute
Second = theSecond
End Sub
End Class "Time
Multiplie Constructors
Imports System.IO
Module Module1
Sub Main()
Dim Palm = New Book("Book 1", 49.99)
Dim CSharp = New Book("Book 2", "Name", "Publisher", 49.99)
Dim VB = New Book("Book 3", "Name 2", "Publish", 49.99, 18, "April 2002")
End Sub
End Module
Class Book
Private Title As String
Private Publisher As String
Private Author As String
Private Price As Double
Private ChapterCount As Integer
Private CopyrightDate As String
Public Sub New(ByVal Title As String, ByVal Price As Double)
Me.Title = Title
Me.Price = Price
Me.Author = ""
Me.ChapterCount = 0
Me.Publisher = ""
Me.CopyrightDate = ""
End Sub
Public Sub New(ByVal Title As String, ByVal Author As String, ByVal Publisher As String, ByVal Price As Double)
Me.Title = Title
Me.Author = Author
Me.Publisher = Publisher
Me.Price = Price
Me.ChapterCount = 0
Me.CopyrightDate = ""
End Sub
Public Sub New(ByVal Title As String, ByVal Author As String, ByVal Publisher As String, ByVal Price As Double, ByVal ChapterCount As Integer, ByVal CopyrightDate As Date)
Me.Title = Title
Me.Author = Author
Me.Publisher = Publisher
Me.Price = Price
Me.ChapterCount = ChapterCount
Me.CopyrightDate = CopyrightDate
End Sub
End Class
Overloading constructors
Imports System
Public Class MainClass
Shared Sub Main(ByVal args As String())
" use overloaded constructors
Dim time1 As New CTime2()
Dim time2 As New CTime2(2)
Dim time3 As New CTime2(21, 34)
Dim time4 As New CTime2(12, 25, 42)
Dim time5 As New CTime2(27, 74, 99)
Dim time6 As New CTime2(time4) " use time4 as initial value
Const SPACING As Integer = 13 " spacing between output text
Console.WriteLine( "Constructed with: " & vbCrLf & _
" time1: all arguments defaulted" & vbCrLf & _
Space(SPACING) & time1.ToUniversalString() )
" invoke time2 methods
Console.WriteLine( " time2: hour specified; minute and second defaulted" & _
vbCrLf & Space(SPACING) & _
time2.ToUniversalString() )
" invoke time3 methods
Console.WriteLine( " time3: hour and minute specified; second defaulted" & _
vbCrLf & Space(SPACING) & time3.ToUniversalString() )
" invoke time4 methods
Console.WriteLine( " time4: hour, minute and second specified" & _
vbCrLf & Space(SPACING) & time4.ToUniversalString() )
" invoke time5 methods
Console.WriteLine( " time5: hour, minute and second specified" & _
vbCrLf & Space(SPACING) & time5.ToUniversalString() )
" invoke time6 methods
Console.WriteLine( " time6: Time2 object time4 specified" & vbCrLf & _
Space(SPACING) & time6.ToUniversalString() )
End Sub
End Class
" Represents time and contains overloaded constructors.
Class CTime2
Inherits Object
Private mHour As Integer " 0 - 23
Private mMinute As Integer " 0 - 59
Private mSecond As Integer " 0 - 59
" constructor initializes each variable to zero and
" ensures that each CTime2 object starts in consistent state
Public Sub New()
SetTime()
End Sub " New
" CTime2 constructor: hour supplied;
" minute and second default to 0
Public Sub New(ByVal hourValue As Integer)
SetTime(hourValue)
End Sub " New
" CTime2 constructor: hour and minute supplied;
" second defaulted to 0
Public Sub New(ByVal hourValue As Integer, _
ByVal minuteValue As Integer)
SetTime(hourValue, minuteValue)
End Sub " New
" CTime2 constructor: hour, minute and second supplied
Public Sub New(ByVal hourValue As Integer, _
ByVal minuteValue As Integer, ByVal secondValue As Integer)
SetTime(hourValue, minuteValue, secondValue)
End Sub " New
" CTime2 constructor: another CTime2 object supplied
Public Sub New(ByVal timeValue As CTime2)
SetTime(timeValue.mHour, timeValue.mMinute, timeValue.mSecond)
End Sub " New
" set new time value using universal time;
" perform validity checks on data;
" set invalid values to zero
Public Sub SetTime(Optional ByVal hourValue As Integer = 0, _
Optional ByVal minuteValue As Integer = 0, _
Optional ByVal secondValue As Integer = 0)
" perform validity checks on hour, then set hour
If (hourValue >= 0 AndAlso hourValue < 24) Then
mHour = hourValue
Else
mHour = 0
End If
" perform validity checks on minute, then set minute
If (minuteValue >= 0 AndAlso minuteValue < 60) Then
mMinute = minuteValue
Else
mMinute = 0
End If
" perform validity checks on second, then set second
If (secondValue >= 0 AndAlso secondValue < 60) Then
mSecond = secondValue
Else
mSecond = 0
End If
End Sub " SetTime
" convert String to universal-time format
Public Function ToUniversalString() As String
Return String.Format("{0}:{1:D2}:{2:D2}", _
mHour, mMinute, mSecond)
End Function " ToUniversalString
End Class
Use Constructor to init member variables
Imports System
Imports System.IO
Public Class MainClass
Shared Sub Main()
Dim e As New Employee("Joe", 10000)
Console.WriteLine(e.TheName & " salary is " & e.Salary)
Console.WriteLine(e)
End Sub
Public Class Employee
Private m_Name As String
Private m_Salary As Decimal
Public Sub New(ByVal sName As String, ByVal curSalary As Decimal)
If sName = String.Empty Then
Console.WriteLine("no names")
Else
m_Name = sName
End If
End Sub
Public Property TheName() As String
Get
Return m_Name
End Get
Set(ByVal Value As String)
m_Name = Value
End Set
End Property
Public ReadOnly Property Salary() As Decimal
Get
Return m_Salary
End Get
End Property
Public Overrides Function ToString() As String
Return (m_Name & " " & Me.GetType.ToString)
End Function
End Class
End Class