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 AlumnoInherits 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 ProfesorInherits 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 Module1Sub 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.
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.