|
|
tutoriales > Herencia VB .NET
Herencia Visual Studio .NET
La herencia es la habilidad de un clase de obtener la interface y los comportamientos de un clase ya existente, por lo tanto se podría definir a esta clase como una "subclase", por lo que se puede decir que esta clase en un tipo de la clase heredada.
Vb .NET soporta herencia, pero no soporta múltiples herencia, donde una clase puede heredar de muchas clases. Lo que si se podría hacer es una clase heredar de otra clase y a su vez otra clase heredar de esta última por lo tanto pudiendo acceder a las otras dos.
Es una forma de ahorrarnos el tener que escribir más código del necesario y crear diferentes objetos usando una sola interface, bienvenido al mundo de la programación orientada a objetos
En la plataforma .NET, como en otras plataformas orientadas a objetos, la herencia es el pan de cada día. Muchas veces se tienen objetos, como puede ser un Listbox o textbox, que no se adecuan o lo que se necesita en ese instante, heredando la clase de este control se puede sobrescribir para adecuarla a lo que se necesite.
En visual basic .NET la herencia se hace de la siguiente manera:
'' Declaración Clase normal
Public Class Ejemplo
  Private mintID As nteger
  Private mstrItem As String
  Public Property ID() As Integer
   Get
    Return mintID
   End Get
   Set
    mintID = value
   End Set
   End Property
  Public Property Item() As String
   Get
     Return mstrItem
   End Get
   Set
     mstrItem = Value
   End Set
  End Property
end class
|
Para heredar de esta clase, en la subclase añadiremos inherits Ejemplo
Public Class Ejemplo2
  Inherits Ejemplo
  Private _Descripcion As String
  Public ReadOnly Property Descripcion() As String
   Get
    Return _Descripcion
   End Get
  End Property
  Public Sub New(ByVal ProductID As String)
   'Item elmento heredado lo tratamos como una variable más aunque no este declarada
   Item = ProductID
   mstrDescription = “Test product description”
  End Sub
End Class
|
Prevenir la herencia
A veces puede pasar que declaremos una clase no heredable. Se hace de la siguiente forma:
Public NotInheritable Class Ejemplo
End Class
|
Public, Friend, Private and protected
Los métodos o funciones que se declaren en la clase a heredar pueden ser:
Public, Friend: Lo pueden ver las clases que hereden y las instancias.
Protected: Solo lo pueden ver las clases que hereden de la clase padre.
Private: No lo pueden ver de ninguna manera.
Método Overriding
Una clase hijo puede heredar de una clase padre, eso esta claro. Al heredar puede tener métodos y funciones ya desarrolladas. Sin embargo, usando el concepto de overriding (Sobrescribir) se pueden alterar los métodos declarados en la clase padre.
Por defecto los métodos no pueden ser sobreescritos por la subclase. Para poder ser sobreescritos se deben declarar en la clase padre como Overridable:
Public Class Padre
  Public Overridable Sub HacerAlgo()
   MessageBox.Show(“Hola Mundo”)
  End Sub
End Class
|
Por otro lado se puede declarar explícitamente que no se puede sobrescribir, usando la palabra clave NotOverridable
Para sobrescribir en la clase hijose escribe la palabra Overrides por delante del método:
Public Class SubClass
  Inherits Parent
  Public Overrides Sub HacerAlgo()
   MessageBox.Show(“Hola Mundo Nuevo”)
  End Sub
End Class
|
El mensaje seria "Hola Mundo Nuevo" al sobrescribir el método
MustOverride
Los métodos se pueden declarar MustOverride. Esto se usa cuando en la clase padre no se define el comportamiento y se espera que en la subclase se define este comportamiento para que funcione correctamente.
Si se define de esta manera y no se sobrescribir la aplicación no compilará.
|
Public MustOverride Sub hacerAlgo()
|
MustInherit
Para asegurarse de que no se pueden crear instancias y solo se puede acceder a esta clase herendado se usa la palabra clave MustInherit.
Si tenemos una clase que solo contiene propiedades y variables es ilógico crear un objeto de esta clase, pero heredando si tiene más sentido.
Public MustInherit Class LineItem
|
MyBase
A veces desde la subclase querremos explícitamente usar los métodos desde la clase padre. Recordar que cada vez que sobrescribimos un métodos Override este método es virtual, así que siempre se usará el método más cercano. Para usar el método del padre se usa el nombre clase Mybase.
  Public Class SubClass
    Inherits Parent
  Public Overrides Sub HacerAlgo()
    MessageBox.Show(“Hola desde la subclass”)
    'Llamar a la clase padre y tendremos dos messagebox. Este y el de la clase padre
    MyBase.HacerALgo()
  End Sub
End Class
|
Clases Abstractas
Clases abstractas son clases que solo implementan declaraciones de métodos y no comportamiento.
Public MustInherit Class Parent
  Public MustOverride Sub hacerAlgo()
  Public MustOverride Sub hacerAlgoMas()
End ClassEnd Class
|
Cualquier cosa que herede de esta clase debe implementar estos métodos si no no compilará
Se preguntarán cual es la diferencia con una interface pues muy pocoas. Se tendría el mismo resultado implementando una interface.
Public Interface IParent
  Sub HacerAlgo
  Sub HacerAlgoMas()
End Interface
|
La diferencia entre heredar y interfaces es que al heredar de la clase y esta clase es heredada por otra clase estas siempre tendrán automáticamente los métodos debido a como funciona la herencia.
En las interfaces se deberán implementar en cada clase los métodos. Si no queremos volver a usar el comportamiento de los métodos interfaces es el camino en cambio si queremos usar el comportamiento de los métodos a través de las clases la herencia es lo que necesitamos
Errores, Recomendanciones, Omisiones u otra información por favor contacte conmigo
|
|
 
|