継承を行うと基本クラスの機能をそのまま派生クラスで利用することが出来ます。メソッドもプロパティもフィールドも全て継承されます。しかし、継承できない部分もあります。それがコンストラクタです。
コンストラクタはそれを宣言したクラスでしか有効ではありません。複数のコンストラクタを持つクラスを継承した場合、その派生クラスのコンストラクタは何もありません。そのため、基本クラスとまったく同じコンストラクタを用意するには、コンストラクタを基本クラスと同じように宣言してやる必要があります。しかし、コンストラクタを一つも宣言していない場合には、引数をなにも取らないコンストラクタをコンパイラが自動生成します。次にその例を簡単に紹介します。
Public Class FoxBase
Public Sub New()
End Sub
Public Sub New(ByVal name As String)
End Sub
Public Sub New(ByVal name As String, ByVal age As String)
End Sub
End Class
Public Class Fox
Inherits FoxBase
End Class
派生クラスの Fox は次のようにして生成することが出来ます。
派生クラスの Fox は次のようにして生成することは出来ません。
Dim f As New Fox("名前")
Dim f As New Fox("名前", "年")
派生クラスでも基本クラスと同じように生成するためには、次のようにコンストラクタを明示的に宣言してやる必要があります。
Public Class Fox
Inherits FoxBase
Public Sub New()
MyBase.New()
End Sub
Public Sub New(ByVal name As String)
MyBase.New(name)
End Sub
Public Sub New(ByVal name As String, ByVal age As String)
MyBase.New(name, age)
End Sub
End Class