W Visual Basic .NET dziedziczenie realizowane jest za pomocą słowa kluczowego Inherits, co pozwala na tworzenie nowych klas na podstawie istniejących, dziedzicząc ich właściwości i metody. Umożliwia to ponowne wykorzystanie kodu i rozszerzenie funkcjonalności bez dublowania.
Przy dziedziczeniu ważne jest:
Protected lub używanie Overridable/Overrides dla metod, które mają być przesłonięte.MustInherit dla klas abstrakcyjnych i NotInheritable dla zakazu dziedziczenia.Przykład:
' Klasa abstrakcyjna Public MustInherit Class Animal Public MustOverride Sub MakeSound() End Class ' Klasa pochodna Public Class Dog Inherits Animal Public Overrides Sub MakeSound() Console.WriteLine("Woof!") End Sub End Class
Cechy:
Implements.Czy klasa może dziedziczyć jednocześnie z kilku klas w Visual Basic .NET?
Niepoprawna odpowiedź: Tak, to możliwe przez przecinek (lub przez interfejsy).
Poprawna odpowiedź: Nie, w Visual Basic .NET wspierane jest tylko pojedyncze dziedziczenie klas, ale można realizować wiele interfejsów.
Przykład:
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 ' Implementacja End Sub Public Sub Swim() Implements ISwimmable.Swim ' Implementacja End Sub End Class
Historia
W dużym systemie księgowym inżynier próbował dziedziczyć z dwóch klas (np.EmployeeiManager). Kod nie kompilował się, co opóźniło projekt o kilka dni: konieczne było przerobienie schematu, wydzielenie funkcjonalności do interfejsów.
Historia
Młody programista zapomniał oznaczyć metody klasy bazowej jakoOverridable, próbując je przesłonić w klasie pochodnej. Wystąpiły błędy podczas kompilacji, przez co zespół stracił czas na debugowanie.
Historia
W jednym projekcie właściwość w klasie bazowej przypadkowo została pozostawiona publiczna, a jej niewłaściwe zmiany z klas pochodnych prowadziły do naruszenia enkapsulacji i powstawania trudnych do uchwycenia błędów.