作为后续问题,到 Base Class Only Methods 父方法由其后代继承. 那么构造函数(例如New())是怎么回事? 这对我来说似乎打破了继承. 是否有某个属性将其标记为特殊? (如果是这样的话是什么?
父方法由其后代继承.
那么构造函数(例如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) ' = ???
鉴于此,禁止构造函数的继承是很有意义的.