'Visual Basic 2010 Shadowing - Shadows Static Typing en Dynamic Binding Namespace Redefinition Class Class1 Public Overridable Sub Method1() Console.WriteLine("Class1.Method1()") End Sub End Class Class Class2 : Inherits Class1 Public Overrides Sub Method1() Console.WriteLine("Class2.Method1()") End Sub End Class Class Class3 : Inherits Class2 Public Overrides Sub Method1() Console.WriteLine("Class3.Method1()") End Sub End Class Class Example Public Shared Sub Main() Dim object1_1 As Class1 = New Class1 Dim object1_2 As Class1 = New Class2 Dim object1_3 As Class1 = New Class3 Dim object2_2 As Class2 = New Class2 Dim object2_3 As Class2 = New Class3 Dim object3_3 As Class3 = New Class3 ' object1_1.Method1() object1_2.Method1() object1_3.Method1() object2_2.Method1() object2_3.Method1() object3_3.Method1() ' Console.ReadLine() End Sub End Class End Namespace Namespace Shadowing Class Class1 Public Overridable Sub Method1() Console.WriteLine("Class1.Method1()") ' (1) End Sub End Class Class Class2 : Inherits Class1 Public Overridable Shadows Sub Method1() Console.WriteLine("Class2.Method1()") ' (2) End Sub End Class Class Class3 : Inherits Class2 Public Overrides Sub Method1() Console.WriteLine("Class3.Method1()") ' (3) End Sub End Class End Namespace Namespace Shadowing Class Example Public Shared Sub Main() Dim object1_1 As Class1 = New Class1 Dim object1_2 As Class1 = New Class2 Dim object1_3 As Class1 = New Class3 Dim object2_2 As Class2 = New Class2 Dim object2_3 As Class2 = New Class3 Dim object3_3 As Class3 = New Class3 ' object1_1.Method1() object1_2.Method1() object1_3.Method1() object2_2.Method1() object2_3.Method1() object3_3.Method1() ' Console.ReadLine() End Sub End Class End Namespace Namespace FragileBaseClass1 Class CharString Private m_Items As Char() = {} Public Overridable Sub Add(ByVal aChar As Char) ReDim Preserve m_Items(m_Items.Length) m_Items(m_Items.Length - 1) = aChar End Sub Public Overridable Sub AddAll(ByVal chars As Char()) For Each charElement As Char In chars Add(charElement) Next End Sub Public Overrides Function ToString() As String If m_Items IsNot Nothing Then For Each charElement As Char In m_Items ToString &= charElement Next End If End Function End Class End Namespace Namespace FragileBaseClass1 Class CountedCharString : Inherits CharString Private m_Count As Integer Public Overrides Sub Add(ByVal aChar As Char) MyBase.Add(aChar) m_Count += 1 End Sub Public ReadOnly Property Count() As Integer Get Count = m_Count End Get End Property End Class End Namespace Namespace FragileBaseClass1 Class Example Public Shared Sub Main() Dim countedCharString1 As New CountedCharString countedCharString1.Add("a"c) countedCharString1.Add("b"c) countedCharString1.AddAll(New Char() {"c"c, "d"c}) Console.WriteLine(countedCharString1.ToString()) Console.WriteLine(countedCharString1.Count) ' Console.ReadLine() End Sub End Class End Namespace Namespace FragileBaseClass2 Class CharString Private m_Items As Char() = {} Public Overridable Sub Add(ByVal aChar As Char) ReDim Preserve m_Items(m_Items.Length) m_Items(m_Items.Length - 1) = aChar End Sub Public Overridable Sub AddAll(ByVal chars As Char()) Dim oldUpperBound, newUpperBound As Integer If m_Items IsNot Nothing Then oldUpperBound = m_Items.Length - 1 If chars IsNot Nothing Then newUpperBound = _ oldUpperBound + chars.Length ReDim Preserve m_Items(newUpperBound) Dim index As Integer = oldUpperBound + 1 For Each charElement As Char In chars m_Items(index) = charElement index += 1 Next End Sub Public Overrides Function ToString() As String If m_Items IsNot Nothing Then For Each charElement As Char In m_Items ToString &= charElement Next End If End Function End Class Class CountedCharString : Inherits CharString Private m_Count As Integer Public Overrides Sub Add(ByVal aChar As Char) MyBase.Add(aChar) m_Count += 1 End Sub Public ReadOnly Property Count() As Integer Get Count = m_Count End Get End Property End Class End Namespace Namespace FragileBaseClass2 Class Example Public Shared Sub Main() Dim countedCharString1 As New CountedCharString countedCharString1.Add("a"c) countedCharString1.Add("b"c) countedCharString1.AddAll(New Char() {"c"c, "d"c}) Console.WriteLine(countedCharString1.ToString()) Console.WriteLine(countedCharString1.Count) ' Console.ReadLine() End Sub End Class End Namespace Namespace OverloadingRedefinitionOrShadowing1 Class Class1 Public Sub Test() Console.WriteLine("Class1.Test()") End Sub End Class Class Class2 : Inherits Class1 Public Sub Test() Console.WriteLine("Class2.Test()") End Sub End Class Class Example Public Shared Sub Main() Dim object1_1 As Class1 = New Class1 object1_1.Test() Dim object1_2 As Class1 = New Class2 object1_2.Test() Dim object2 As Class2 = New Class2 object2.Test() ' Console.ReadLine() End Sub End Class End Namespace Namespace OverloadingRedefinitionOrShadowing2 Class Class1 Public Overridable Sub Test() Console.WriteLine("Class1.Test()") End Sub End Class Class Class2 : Inherits Class1 Public Sub Test() Console.WriteLine("Class2.Test()") End Sub End Class Class Example Public Shared Sub Main() Dim object1_1 As Class1 = New Class1 object1_1.Test() Dim object1_2 As Class1 = New Class2 object1_2.Test() Dim object2 As Class2 = New Class2 object2.Test() ' Console.ReadLine() End Sub End Class End Namespace Namespace OverloadingRedefinitionOrShadowing3 Class Class1 Public Overridable Sub Test() Console.WriteLine("Class1.Test()") End Sub End Class Class Class2 : Inherits Class1 Public Overrides Sub Test() Console.WriteLine("Class2.Test()") End Sub End Class Class Example10 Public Shared Sub Main() Dim object1_1 As Class1 = New Class1 object1_1.Test() Dim object1_2 As Class1 = New Class2 object1_2.Test() Dim object2 As Class2 = New Class2 object2.Test() ' Console.ReadLine() End Sub End Class End Namespace Namespace OverloadingRedefinitionOrShadowing4 Class Class1 Public Sub Test() Console.WriteLine("Class1.Test()") End Sub End Class Class Class2 : Inherits Class1 Public Shadows Sub Test() Console.WriteLine("Class2.Test()") End Sub End Class Class Example11 Public Shared Sub Main() Dim object1_1 As Class1 = New Class1 object1_1.Test() Dim object1_2 As Class1 = New Class2 object1_2.Test() Dim object2 As Class2 = New Class2 object2.Test() ' Console.ReadLine() End Sub End Class End Namespace Namespace OverloadingRedefinitionOrShadowing5 Class Class1 Public Sub Test() Console.WriteLine("Class1.Test()") End Sub End Class Class Class2 : Inherits Class1 Public Overloads Sub Test() Console.WriteLine("Class2.Test()") End Sub End Class Class Example12 Public Shared Sub Main() Dim object1_1 As Class1 = New Class1 object1_1.Test() Dim object1_2 As Class1 = New Class2 object1_2.Test() Dim object2 As Class2 = New Class2 object2.Test() ' Console.ReadLine() End Sub End Class End Namespace 'Bezoek www.vbvoorbeelden.be voor meer Visual Basic voorbeelden. 'Copyright - De Wolf / vbvoorbeelden - 2003-2011 - Alle rechten voorbehouden.