为什么构造函数不继承?

Ada*_*ght 5 .net vb.net inheritance

作为后续问题,基于类别的方法

父方法由其后代继承.

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

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

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

Hei*_*nzi 2

继承(或者更准确地说,子类型关系)保证了 ifS是 的子类型,只要需要类型的对象,T就可以使用 类型的对象。ST

构造函数永远不能对象上执行——它们的执行是为了创建一个对象。他们在这方面很特别:

myS.SomeMethodOfT()    ' works
myS.New()              ' doesn't work -- constructors are special.
Run Code Online (Sandbox Code Playgroud)

换句话说,构造函数可以被视为Shared返回特定类型的对象的静态(在 Visual Basic 中)方法(某些语言实际上是这样实现的):

Dim myS = New S()      ' can be seen as syntactic sugar for 
                       ' something like myS = S.CreateNew()
Run Code Online (Sandbox Code Playgroud)