gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:13:00 26 4
gpt4 key购买 nike

作为后续问题,给Base Class Only Methods

父方法由其后代继承。

那么为什么构造函数(例如New())不是呢?
在我看来,这似乎破坏了继承。

某处是否有一个属性将其标记为特殊? (如果是,那是什么?)

能否请您解释发生了什么。

最佳答案

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

首先,在VB#(或C#)中不会继承任何静态(Shared)成员。尽管这与大多数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) ' = ???

鉴于此,禁止继承构造函数在很大程度上是有意义的。

关于.net - 为什么不继承构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com