mbm*_*ura 2 vb.net oop inheritance shadows
在谈论阴影和重载时,我知道VB.net非常奇怪,但是这个我完全感到困惑.
我正在使用类似于以下模型的模型.家长班:
Public Class Base
Function F() As String
Return "F() in Base Class"
End Function
Function F(ByVal n As Integer) As String
Return "F(" + n.ToString() + ") in Base Class"
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
还有这个:
Class Derived
Inherits Base
Shadows Function F() As String
Return "-"
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
运行以下内容时:
Sub Main()
Dim parent As Base = New Base()
Dim child As Derived = New Derived()
Console.WriteLine(parent.F())
Console.WriteLine(parent.F(1))
Console.WriteLine("------------")
Console.WriteLine(child.F())
Console.WriteLine(child.F(1)) 'this should not compile, due to the shadow keyword.
Console.Read()
End Sub
Run Code Online (Sandbox Code Playgroud)
抛出IndexOutOfRangeException.此外,在更改时(在派生类中):返回" - "表示返回"派生类中的Func"控制台打印字符"u".有人知道这个的原因吗?
你的F是一个字符串,所以当你指定索引时,它会查看字符串的索引,而不是带有整数参数的第二个函数.
"u"是"Func"中的第二个字符,由索引1指定.
对于您的示例,您还必须隐藏第二个函数:
Class Derived
Inherits Base
Shadows Function F() As String
Return "-"
End Function
Shadows Function F(ByVal n As Integer) As String
Return "X"
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |