In Visual Basic .NET wordt erfelijkheid geïmplementeerd met het sleutelwoord Inherits, waarmee nieuwe klassen op basis van bestaande klassen kunnen worden gemaakt, waardoor hun eigenschappen en methoden worden geërfd. Dit maakt hergebruik van code en uitbreiding van functionaliteit mogelijk zonder duplicatie.
Bij erfelijkheid is het belangrijk:
Protected of Overridable/Overrides te gebruiken voor methoden die moeten worden overschreven.MustInherit te gebruiken voor abstracte klassen en NotInheritable voor het verbieden van erfelijkheid.Voorbeeld:
' Abstracte klasse Public MustInherit Class Animal Public MustOverride Sub MakeSound() End Class ' Geërfde klasse Public Class Dog Inherits Animal Public Overrides Sub MakeSound() Console.WriteLine("Woef!") End Sub End Class
Kenmerken:
Implements.Kan een klasse tegelijkertijd meerdere klassen erven in Visual Basic .NET?
Onjuiste antwoord: Ja, het is mogelijk via een komma (of via interfaces).
Juiste antwoord: Nee, in Visual Basic .NET wordt alleen enkelvoudige erfelijkheid van klassen ondersteund, maar meerdere interfaces kunnen worden geïmplementeerd.
Voorbeeld:
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 ' Implementatie End Sub Public Sub Swim() Implements ISwimmable.Swim ' Implementatie End Sub End Class
Verhaal
In een groot boekhoudsysteem probeerde een ingenieur twee klassen te erven (bijvoorbeeldEmployeeenManager). De code compileerde niet, wat het project een paar dagen vertraagde: de schema moest worden herzien en functionaliteit moest in interfaces worden ondergebracht.
Verhaal
Een jonge ontwikkelaar vergat de methoden van de basisklasse alsOverridablete markeren, maar probeerde ze te overschrijven in de afgeleide klasse. Er traden compilerfouten op, waardoor het team tijd verloor aan debuggen.
Verhaal
In een project werd een eigenschap in de basisklasse per ongeluk openbaar gelaten, en deze werd verkeerd gewijzigd door afgeleiden klassen, wat leidde tot schending van de encapsulatie en moeilijk te traceren bugs.