En Visual Basic .NET, la herencia se implementa a través de la palabra clave Inherits, lo que permite crear nuevas clases basándose en clases existentes, heredando sus propiedades y métodos. Esto permite reutilizar código y extender la funcionalidad sin duplicación.
Al heredar, es importante:
Protected o usar Overridable/Overrides para métodos que deben ser sobreescritos.MustInherit para clases abstractas y NotInheritable para prohibir la herencia.Ejemplo:
' Clase abstracta Public MustInherit Class Animal Public MustOverride Sub MakeSound() End Class ' Clase heredada Public Class Dog Inherits Animal Public Overrides Sub MakeSound() Console.WriteLine("¡Guau!") End Sub End Class
Características:
Implements.¿Puede una clase heredar simultáneamente de varias clases en Visual Basic .NET?
Respuesta incorrecta: Sí, es posible a través de comas (o mediante interfaces).
Respuesta correcta: No, en Visual Basic .NET solo se admite la herencia única de clases, pero se pueden implementar múltiples interfaces.
Ejemplo:
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 ' Implementación End Sub Public Sub Swim() Implements ISwimmable.Swim ' Implementación End Sub End Class
Historia
En un gran sistema contable, un ingeniero intentó heredar dos clases (por ejemplo,EmployeeyManager). El código no compilaba, lo que retrasó el proyecto varios días: tuvo que reestructurar el esquema y trasladar la funcionalidad a interfaces.
Historia
Un joven desarrollador olvidó marcar los métodos de la clase base comoOverridable, pero intentó sobreescribirlos en su heredero. Se produjeron errores en tiempo de compilación, lo que llevó al equipo a perder tiempo en la depuración.
Historia
En un proyecto, se dejó accidentalmente una propiedad en la clase base como pública, y se modificó incorrectamente desde los herederos, lo que llevó a la ruptura de la encapsulación y a la aparición de errores difíciles de detectar.