当前位置 : 主页 > 手机开发 > 其它 >

.net – 为什么构造函数不继承?

来源:互联网 收集:自由互联 发布时间:2021-06-19
作为后续问题,到 Base Class Only Methods 父方法由其后代继承. 那么构造函数(例如New())是怎么回事? 这对我来说似乎打破了继承. 是否有某个属性将其标记为特殊? (如果是这样的话是什么?
作为后续问题,到 Base Class Only Methods

父方法由其后代继承.

那么构造函数(例如New())是怎么回事?
 这对我来说似乎打破了继承.

是否有某个属性将其标记为特殊? (如果是这样的话是什么?)

可以这样请解释发生了什么.

我怀疑真正的原因是双重的:

首先,在VB#(或C#)中没有继承静态(共享)成员.虽然这与大多数OO语言的做法一致,但它不是必要的设计.可以想象,它可以以不同的方式实施.

其次,限制可以构造子对象的构造函数集通常是有意义的.特别是,由于子类通常具有需要初始化的其他成员,因此调用父类构造函数会使子进程处于未初始化状态.想象一下构造函数可以继承并告诉我下面的代码应该做什么:

Class Base
    Public Sub New()
    End Sub
End Class

Class Derived : Inherits Base
    Public Property X() As Integer

    Public Sub New(ByVal value As Integer)
        X = value
    End Sub
End Class

' …

Dim foo As New Derived()
Console.WriteLine(foo.X) ' = ???

鉴于此,禁止构造函数的继承是很有意义的.

网友评论