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.
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!
como lo puedo hacer en form
Excelente, te felicito, muchas gracias. Abrazos. Mis mejores desesos
Cedea, es lo mismo, pero dependerá en donde invoques las clases.