VB.NET クラスの継承の仕組みとサンプル

VB.NETのクラスの継承の仕組みとサンプルです。

目次

仕組み クラスの継承とは
サンプル 継承の書き方
  親クラスのコンストラクタを実行する(MyBase)
  親クラスのメソッドを実行する(MyBase)
  クラスの継承を禁止する(NotInheritable )
  継承しなければ使えない(MustInherit)

クラスの継承とは

クラスを継承すると、継承先のクラスは継承元のクラスの機能を引き継ぎます。
継承先のクラスは、差分の機能を追加するだけでよくなります。

継承元のクラスのことを「基底クラス 」or 「親クラス 」or 「スーパークラス」といいます。
継承先のクラスのことを「派生クラス」 or「 子クラス」 or「 サブクラス」といいます。

継承の書き方

Public Class クラス名
Inherits 継承元のクラス名

クラスの継承のサンプルです。

Public Class Class1
    Public Function print1()
        Return "表示1"
    End Function
End Class

Public Class Class2
    Inherits Class1
    Public Function print2()
        Return "表示2"
    End Function
End Class

Module Module1
    Sub Main()
        Dim c2 As New Class2
        Console.WriteLine(c2.print1()) '表示1と出力される
        Console.WriteLine(c2.print2()) '表示2と出力される
    End Sub
End Module

1~5行目は、親クラスです。
7~12行目は、子クラスです。InheritsでClass1を継承しています。
17行目のprint1メソッドは子クラスに存在しませんが実行できます。
→子クラスは、親クラスのメソッドを再実装しないで済んでいます。継承の利点です。

 

親クラスのコンストラクタを実行する(MyBase)

親クラスのコンストラクタを実行するサンプルです。 MyBaseを使用します。

Public Class Color1
	Public ReadOnly Property ColorName() As String
	Sub New(name As String)
		ColorName = name
	End Sub
End Class

Public Class Color2
	Inherits Color1
	Sub New(name As String)
		MyBase.New(name)
	End Sub
End Class

Module Module1
	Sub Main()
		Dim c2 As New Color2("赤")
		Console.WriteLine(c2.ColorName) '赤
	End Sub
End Module

10行目は、コンストラクタです。
11行目はMyBaseで親クラスのコンストラクタを実行します。

 

親クラスのメソッドを実行する(MyBase)

親クラスのメソッドを実行するサンプルです。 MyBaseを使用します。

Public Class Class1
	Public Function print1()
		Return "赤"
	End Function
End Class

Public Class Class2
	Inherits Class1
	Public Function print2()
		Return MyBase.print1
	End Function
End Class

Module Module1
	Sub Main()
		Dim c2 As New Class2
		Console.WriteLine(c2.print2()) '赤と出力される
	End Sub
End Module

10行目はMyBaseで親クラスのメソッドを実行します。
ただしMyBaseは省略可能です。

 

クラスの継承を禁止する(NotInheritable)

クラスの継承を禁止するサンプルです。NotInheritableを使用します。

Public NotInheritable Class Class1
    Public Function print1()
        Return "表示1"
    End Function
End Class

Public Class Class2
    Inherits Class1
    Public Function print2()
        Return "表示2"
    End Function
End Class

Module Module1
    Sub Main()
        Dim c2 As New Class2
        Console.WriteLine(c2.print1()) '
        Console.WriteLine(c2.print2()) '
    End Sub
End Module

1行目は、NotInheritableがあります。このクラスは継承できません。
8行目は、Class1を継承しようとしますがエラーになります。

 

継承しなければ使えない(MustInherit)

継承しなければ使えないクラスのサンプルです。MustInheritを使用します。

Public MustInherit Class Class1
    Public Function print1()
        Return "表示1"
    End Function
End Class

Public Class Class2
    Inherits Class1
    Public Function print2()
        Return "表示2"
    End Function
End Class

Module Module1
    Sub Main()
        Dim c1 As New Class1
    End Sub
End Module

1行目は、MustInheritがあります。継承しないと使用できないクラスになります。
16行目は、newで直接Class1をインスタンス化しようとしますがエラーになります。

関連の記事

VB.NET入門 クラスの仕組みとサンプル

△上に戻る