相同签名也可以重载
我对重载的理解是具有不同的签名,如果在子类中重载基类的方法或属性需使用overloads问题1:如以下代码所示,在vs2005中编译成功,使用overloads关键字,如果子类和基类的属性同名、签名也相同?
问题2:子类和基类的属性同名、签名也相同,没有overloads关键字编译后仅仅出现警告?
我对重载的理解有什么出入吗?
'person.vb
Public Class Person
Private mName As String
'Protected mBirthDate As String
Private mBirthDate As String
Public Property Name() As String
Get
Return mName
End Get
Set(ByVal value As String)
mName = value
End Set
End Property
End Class
'employee.vb
Public Enum NameTypes
Informal = 1
formal = 2
End Enum
Public Class Employee
Inherits Person
Private mHireDate As Date
Private mSalary As Double
Private mName As New Generic.Dictionary(Of NameTypes, String)
'子类和基类的属性同名、签名也相同,使用overloads关键字
'即使如下写法语法上完全可以,不报错
'Public Overloads Property Name() As String
' Get
' Return "11"
' End Get
' Set(ByVal value As String)
' End Set
'End Property
'子类和基类的属性同名、签名也相同,没有overloads关键字
'编译后仅仅出现警告
'public property name() as string
' Get
' Return "classemployee"
' End Get
' Set(ByVal value As String)
' End Set
'End Property
Public Overloads Property Name(ByVal type As NameTypes) As String
Get
Return mName(type)
End Get
Set(ByVal value As String)
If mName.ContainsKey(type) Then
mName.Item(type) = value
Else
mName.Add(type, value)
End If
End Set
End Property
End Class --------------------编程问答-------------------- 问题1:如以下代码所示,在vs2005中编译成功,使用overloads关键字,如果子类和基类的属性同名、签名也相同?
同名的过程,除了New,其余均须带上overloads字样,子类在继承基类后,相关的过程仍为继承过程,带上overloads,子类必须带,基类不必须,如果属性和签名均同,则只调用子类过程,基类过程失效
问题2:子类和基类的属性同名、签名也相同,没有overloads关键字编译后仅仅出现警告?
属性同名,签名也相同,是没有关系的,系统将自动忽略到基类过程,同时提出警告,但基类的过程无效
,同时,如果属性或者签名不同,将引发错误 --------------------编程问答-------------------- 问题2:子类和基类的属性同名、签名也相同,没有overloads关键字编译后仅仅出现警告?
属性同名,签名也相同,是没有关系的,系统将自动忽略基类过程,同时提出警告,但基类的过程无效
,同时,如果属性或者签名不同,将引发错误
补充:.NET技术 , VB.NET