Herencia en Visual Basic .NET

visual_basic_base_web

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 <Clase padre>

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

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

Clase Alumno

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

Clase Profesor

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

Modulo:

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

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.

Etiquetas

Deja un comentario

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