VB.NETのクラスの継承の仕組みとサンプルです。
目次
仕組み | クラスの継承とは |
サンプル | 継承の書き方 |
親クラスのコンストラクタを実行する(MyBase) | |
親クラスのメソッドを実行する(MyBase) | |
クラスの継承を禁止する(NotInheritable ) | |
継承しなければ使えない(MustInherit) |
クラスの継承とは
クラスを継承すると、継承先のクラスは継承元のクラスの機能を引き継ぎます。
継承先のクラスは、差分の機能を追加するだけでよくなります。
継承元のクラスのことを「基底クラス 」or 「親クラス 」or 「スーパークラス」といいます。
継承先のクラスのことを「派生クラス」 or「 子クラス」 or「 サブクラス」といいます。
継承の書き方
Public Class クラス名 Inherits 継承元のクラス名 |
- 継承するクラスは、改行してInheritsの後に継承元のクラスを記述します。
- 以下は、MicrosoftのVBの継承の基本のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/objects-and-classes/inheritance-basics
クラスの継承のサンプルです。
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をインスタンス化しようとしますがエラーになります。
関連の記事