Visual Basic .NETでは、Inheritsキーワードを通じて継承が実現されており、既存のクラスを基に新しいクラスを作成し、それらのプロパティやメソッドを継承できます。これにより、コードを再利用し、重複せずに機能を拡張することができます。
継承を行う際には、以下のことが重要です:
Protected修飾子でマークするか、オーバーライドされるべきメソッドにはOverridable/Overridesを使用します。MustInheritキーワードを使い、継承を禁止するにはNotInheritableを使用します。例:
' 抽象クラス Public MustInherit Class Animal Public MustOverride Sub MakeSound() End Class ' 継承されたクラス Public Class Dog Inherits Animal Public Overrides Sub MakeSound() Console.WriteLine("ワン!") End Sub End Class
特徴:
Implementsキーワードを使用して実装されます。Visual Basic .NETでは、一つのクラスが同時に複数のクラスを継承することはできますか?
間違った答え: はい、カンマ(またはインターフェースを通じて)で可能です。
正しい答え: いいえ、Visual Basic .NETではクラスの単一継承のみがサポートされていますが、複数のインターフェースを実装することは可能です。
例:
Public Interface IRunnable Sub Run() End Interface Public Interface ISwimmable Sub Swim() End Interface Public Class Person Implements IRunnable, ISwimmable Public Sub Run() Implements IRunnable.Run ' 実装 End Sub Public Sub Swim() Implements ISwimmable.Swim ' 実装 End Sub End Class
物語
大規模な会計システムでエンジニアが二つのクラス(例えば、EmployeeとManager)を継承しようとしたが、コードがコンパイルされず、プロジェクトが数日遅れた:機能をインターフェースに分離する必要があった。
物語
若い開発者は基底クラスのメソッドをOverridableとしてマークするのを忘れ、派生クラスでオーバーライドしようとした。そのためコンパイル時エラーが発生し、チームはデバッグに時間を費やした。
物語
あるプロジェクトでは、基底クラスのプロパティが誤って公開され、派生クラスから不適切に変更され、カプセル化の違反やキャッチしづらいバグが発生した。