Herencia en Visual Basic .NET

Hola a todos, hoy os explicaré como funciona la herencia en Visual Basic .NET.

La herencia en POO nos sirve para reutilizar código en clases que tienen relación entre sí. Permitiendo que todo el código general este en la clase padre y el código especifico en la clase hija o subclase.

Pongamos un ejemplo, tenemos 2 clases, alumnos y profesores con estos atributos:

Alumno:

  • nombre
  • edad
  • altura
  • peso
  • nota

Profesor:

  • nombre
  • edad
  • altura
  • peso
  • asignatura

Fíjate que los atributos comunes son nombre, edad, altura y peso. Podemos utilizar la herencia haciendo una clase que comparta esos atributos, por ejemplo la clase Persona.

La clase Persona sería la padre y las hijas serian las clases Alumno y Profesor, estas clases hijas solo tendrían un atributo (nota y asignatura, respectivamente).

Para indicar que una clase hereda de otra, debemos usar la palabra reservada Inherits

Es importante tener en cuenta que debe ser escrita en la segunda linea, no en la misma linea, puedes ver el ejemplo más adelante.

Veamos el ejemplo en código:

Clase Persona

[vbnet]Public Class Persona

Private nombre As String
Private edad As Integer
Private altura As Double
Private peso As Double

Public Sub New(nombre As String, edad As Integer, altura As Double, peso As Double)
Me.nombre = nombre
Me.edad = edad
Me.altura = altura
Me.peso = peso
End Sub

Public Property PropNombre() As String
Get
Return nombre
End Get
Set(value As String)
nombre = value
End Set
End Property

Public Property PropEdad() As Integer
Get
Return edad
End Get
Set(value As Integer)
edad = value
End Set
End Property

Public Property PropAltura() As Double
Get
Return altura
End Get
Set(value As Double)
altura = value
End Set
End Property

Public Property PropPeso() As Double
Get
Return peso
End Get
Set(value As Double)
peso = value
End Set
End Property

End Class
[/vbnet]

Clase Alumno

[vbnet]Public Class Alumno
Inherits Persona

Private nota As Integer

Public Sub New(nombre As String, edad As Integer, altura As Double, peso As Double, nota As Integer)
MyBase.New(nombre, edad, altura, peso)
Me.nota = nota
End Sub

Public Property PropNota As Integer
Get
Return nota
End Get
Set(value As Integer)
nota = value
End Set
End Property

End Class
[/vbnet]

Clase Profesor

[vbnet]Public Class Profesor
Inherits Persona

Private asignatura As String

Public Sub New(nombre As String, edad As Integer, altura As Double, peso As Double, asignatura As String)
MyBase.New(nombre, edad, altura, peso)
Me.asignatura = asignatura
End Sub

Public Property PropAsignatura As String
Get
Return asignatura
End Get
Set(value As String)
asignatura = value
End Set
End Property

End Class
[/vbnet]

Modulo:

[vbnet]Module Module1

Sub Main()

Dim pro As New Profesor(«Profesor», 30, 1.7, 70, «Matematicas»)

Dim alu1 As New Alumno(«Alumno1», 12, 1.5, 40, 7)
Dim alu2 As New Alumno(«Alumno2», 13, 1.45, 45, 5)

Console.WriteLine(«Altura del profesor: » & pro.PropAltura)

Console.WriteLine(«Edad del alumno 1: » & alu1.PropEdad)
Console.WriteLine(«Peso del alumno 2: » & alu2.PropPeso)

Console.ReadLine()

End Sub

End Module
[/vbnet]

Como vemos en el código del modulo, las clases hijas tienen acceso a las propiedades de la clase padre y en la clase hija tiene menos código como ves. Esto nos permite evitar duplicidades en el código.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

4 comentarios

  1. JUAN

    Perfectísimo explicado. De no tener ni idea a leerlo una vez y entenderlo. Vengo del VB6, algo de base tengo pero aún así muy bien explicado. Gracias!

  2. m

    Excelente, te felicito, muchas gracias. Abrazos. Mis mejores desesos

  3. Lion

    Cedea, es lo mismo, pero dependerá en donde invoques las clases.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539