Различные аргументы, почему конструкторы не могут быть унаследованы, ошибочны.И pascal, и c, которые действительно являются объектно-ориентированными языками, допускают унаследованные конструкторы.
Приведенный выше пример ...
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)' = ???
Ответ ... foo.x не инициализирован.Но использование неинициализированной переменной - это не ошибка языка ... это ошибка программиста.
Рассмотрим другой пример ...
Class Base
Public Property X As Integer
Public Sub New(ByVal value As Integer)
X = value
End Sub
End Class
Class Derived : Inherits Base
End Class
'Это работает ... Dimo как База = Новая База (5) 'Это не так.Это будет работать в Паскале или C ..., но не в VB (или, предположительно, C #)должен переопределить конструктор, если он не меняет свою подпись.Реальность такова, что это пример того, как Microsoft забирает ценный инструмент, потому что слишком много программистов не способны правильно использовать этот инструмент.