VB.Net Tutorial/Class Module/Base Class

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

Call constroctor from base class

<source lang="vbnet">Option Strict On

Imports System

Public Class Rectangle
    Public Sub New(ByVal top As Integer, ByVal left As Integer)
        Me.top = top
        Me.left = left
    End Sub
    Public Sub DrawRectangle( )
        Console.WriteLine("Drawing Rectangle at {0}, {1}", top, left)
    End Sub
    Private top As Integer
    Private left As Integer
End Class
Public Class NamedRectangle 
Inherits Rectangle
    Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal n As String)
        MyBase.New(top, left)
        RectName = n
    End Sub "New
    Public Shadows Sub DrawRectangle( )
        MyBase.DrawRectangle( ) 
        Console.WriteLine("Writing string to the listbox: {0}", RectName)
    End Sub 
    Private RectName As String
End Class 
Module Module1
    Sub Main( )
        Dim w As New Rectangle(5, 10)
        w.DrawRectangle( )
        Dim lb As New NamedRectangle(20, 30, "Hello")
        lb.DrawRectangle( )
    End Sub
End Module</source>
Drawing Rectangle at 5, 10
Drawing Rectangle at 20, 30
Writing string to the listbox: Hello

Call method with MyBase

<source lang="vbnet">Option Strict On

Imports System
Public Class Control
    Public Sub New(ByVal top As Integer, ByVal left As Integer)
        Me.top = top
        Me.left = left
    End Sub
    Public Overridable Sub DrawControl( )
        Console.WriteLine("Control: drawing Control at {0}, {1}", top, left)
    End Sub
    Protected top As Integer
    Protected left As Integer
End Class
Public Class Label
    Inherits Control
    Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal n As String)
        MyBase.New(top, left)
        text = n
    End Sub 
    Public Overrides Sub DrawControl( )
        MyBase.DrawControl( ) 
        Console.WriteLine("Writing string to the listbox: {0}", text)
    End Sub 
    Private text As String 
End Class 
Public Class Button
    Inherits Control
    Public Sub New(ByVal top As Integer, ByVal left As Integer)
        MyBase.New(top, left)
    End Sub "New
    Public Overrides Sub DrawControl( )
        Console.WriteLine("Drawing a button at {0}, {1}" + ControlChars.Lf, top, Left)
    End Sub 
End Class 
Public Class Tester
    Shared Sub Main( )
        Dim win As New Control(1, 2)
        Dim lb As New Label(3, 4, "test")
        Dim b As New Button(5, 6)
        win.DrawControl( )
        lb.DrawControl( )
        b.DrawControl( )
        
        Dim winArray(3) As Control
        winArray(0) = New Control(1, 2)
        winArray(1) = New Label(3, 4, "AAA")
        winArray(2) = New Button(5, 6)
        Dim i As Integer
        For i = 0 To 2
            winArray(i).DrawControl( )
        Next i
    End Sub
End Class</source>
Control: drawing Control at 1, 2
Control: drawing Control at 3, 4
Writing string to the listbox: test
Drawing a button at 5, 6
Control: drawing Control at 1, 2
Control: drawing Control at 3, 4
Writing string to the listbox: AAA
Drawing a button at 5, 6

Protected base constructor

<source lang="vbnet">Public MustInherit Class Product

 Public Price As Single
 Public Location As String = "Unshelved"
 Public IsSpecial As Boolean = False
 Public Type As String = "Not Defined"
 Protected Sub New(T As String, Optional s As Boolean = False)
   If s Then IsSpecial = True 
   Type = T
 End Sub 

End Class Class MyProduct

 Inherits Product
 Public Title = "Test Title"
 Public Sub New()
   MyBase.New("CD")
 End Sub
 Public Sub New(IsSpecial As Boolean)
   MyBase.New("CD", IsSpecial)
 End Sub
 Public Sub New(T As String, Optional IsSpecial As Boolean = False)
   Me.New(IsSpecial)
   Title = T
 End Sub

End Class Module Test

 Sub Main()
   Dim C1 = New MyProduct("S")
   Dim C2 = New MyProduct("H", True)
   C1.Price = 9.99
   C2.Price = 12.99
   Console.WriteLine(C1.Title)
   Console.WriteLine(C1.Location)
   Console.WriteLine(C1.Price)
   
   Console.WriteLine(C2.Title)
   Console.WriteLine(C2.Location)
   Console.WriteLine(C2.Price)
 End Sub

End Module</source>

S
Unshelved
9.99
H
Unshelved
12.99

Shadows method in base class

<source lang="vbnet">Option Strict On

Imports System

Public Class Rectangle
    Public Sub New(ByVal top As Integer, ByVal left As Integer)
        Me.top = top
        Me.left = left
    End Sub
    Public Sub DrawRectangle( )
        Console.WriteLine("Drawing Rectangle at {0}, {1}", top, left)
    End Sub
    Private top As Integer
    Private left As Integer
End Class
Public Class NamedRectangle 
Inherits Rectangle
    Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal n As String)
        MyBase.New(top, left)
        RectName = n
    End Sub "New
    Public Shadows Sub DrawRectangle( )
        MyBase.DrawRectangle( ) 
        Console.WriteLine("Writing string to the listbox: {0}", RectName)
    End Sub 
    Private RectName As String
End Class 
Module Module1
    Sub Main( )
        Dim w As New Rectangle(5, 10)
        w.DrawRectangle( )
        Dim lb As New NamedRectangle(20, 30, "Hello")
        lb.DrawRectangle( )
    End Sub
End Module</source>
Drawing Rectangle at 5, 10
Drawing Rectangle at 20, 30
Writing string to the listbox: Hello