VB.Net Tutorial/Class Module/Overridable

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

Overrides and Shadows methods from base class

Option Strict On
 Imports System
 Imports Microsoft.VisualBasic
 Interface Printable
     Sub Read( )
     Sub Write( )
 End Interface
 Public Class Document : Implements Printable
     Public Sub New(ByVal s As String)
         Console.WriteLine("Creating document with: {0}", s)
     End Sub
     Public Overridable Sub Read( ) Implements Printable.Read
         Console.WriteLine("Document Virtual Read Method for Printable")
     End Sub
     Public Sub Write( ) Implements Printable.Write
         Console.WriteLine("Document Write Method for Printable")
     End Sub
 End Class
 Public Class Note : Inherits Document
     Public Sub New(ByVal s As String)
         MyBase.New(s)
         Console.WriteLine("Creating note with: {0}", s)
     End Sub
     Public Overrides Sub Read( )
         Console.WriteLine("Overriding the Read method for Note!")
     End Sub
     Public Shadows Sub Write( )
         Console.WriteLine("Implementing the Write method for Note!")
     End Sub
 End Class
 Class Tester
     Public Shared Sub Main( )
         Dim theNote As Document = New Note("Test Note")
         If TypeOf theNote Is Printable Then
             Dim isNote As Printable = theNote
             isNote.Read( )
             isNote.Write( )
         End If
         Console.WriteLine(vbCrLf)
         theNote.Read( )
         theNote.Write( )
         Console.WriteLine(vbCrLf)
         Dim note2 As New Note("Second Test")
         If TypeOf note2 Is Printable Then
             Dim isNote2 As Printable = note2
             isNote2.Read( )
             isNote2.Write( )
         End If
         Console.WriteLine(vbCrLf)
         note2.Read( )
         note2.Write( )
     End Sub
 End Class
Creating document with: Test Note
Creating note with: Test Note
Overriding the Read method for Note!
Document Write Method for Printable

Overriding the Read method for Note!
Document Write Method for Printable

Creating document with: Second Test
Creating note with: Second Test
Overriding the Read method for Note!
Document Write Method for Printable

Overriding the Read method for Note!
Implementing the Write method for Note!

Overrides Overridable methods

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
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

ToString method overrides

Module Module1
    Class Phone
        Public Number As String
        Public Sub New(ByVal Number As String)
            Me.Number = Number
        End Sub
        Public Overrides Function ToString() As String
            ToString = Number
        End Function
    End Class
    Sub Main()
        Dim MyPhone As New Phone("555-1212")
        Console.WriteLine(MyPhone)
        Console.WriteLine(MyPhone.ToString())
    End Sub
End Module
555-1212
555-1212