当前位置:编程学习 > C#/ASP.NET >>

相同签名也可以重载

我对重载的理解是具有不同的签名,如果在子类中重载基类的方法或属性需使用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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,