VB.Net/Class/Constructor

Материал из VB Эксперт
Перейти к: навигация, поиск

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