在子类的基类中隐藏函数和覆盖相同的函数之间的区别是什么?还涉及性能问题吗?
我知道如何在VB.net中使用阴影以及如何覆盖。我的问题是我何时以及为什么要遮蔽一个函数而不是覆盖它,反之亦然。
谢谢!
答案 0 :(得分:1)
Here is an answer in terms of C#,但我相信最重要的解释很容易理解为VB.Net。
VB.Net中的阴影在C#中使用“new”完成,并且覆盖显式使用“覆盖”。从VB.Net的角度来看,如果其他任何事情都难以理解,请告诉我。
答案 1 :(得分:1)
我还没有找到Shadows的用途。 一个区别是,如果从基类调用覆盖/阴影的方法,如果它被覆盖,子类中的方法将被调用,如果它被遮蔽,则仍将调用基类方法(只有子类知道阴影输出)。
参见示例代码,它输出A,B A
Sub Main()
Dim ClassA As New A
Dim ClassB As New B
Dim ClassC As New C
Console.WriteLine(ClassA.GetText)
Console.WriteLine(ClassB.GetText)
Console.WriteLine(ClassC.GetText)
Console.ReadKey()
End Sub
Public Class A
Public Function GetText()
Return GetSomeText()
End Function
Protected Overridable Function GetSomeText()
Return "A"
End Function
End Class
Public Class B
Inherits A
Protected Overrides Function GetSomeText() As Object
Return "B"
End Function
End Class
Public Class C
Inherits A
Protected Shadows Function GetSomeText()
Return "C"
End Function
End Class