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!