Herencia

 

 

 

 

 

 

  Ejemplos con NET

 

 

Volver a página principal

 

 

 

Herencia

Dicen que esta es uno de los pilares de la programación orientada a objetos junto con la abstracción y el polimorfismo (y estoy de acuerdo) :) Una de las grandes ventajas del lenguaje orientado a objetos es principalmente la reutilización del código. Así pues, la herencia nos permite obtener toda la funcionalidad de una clase ya existente y ampliarla sin tener que rescribir todo el código de la clase heredada. Pero, ¿Debemos adaptarnos a todas las funcionalidades de la clase heredada? Pues... no. NET nos permite sustituir, ampliar o crear nuevas funcionalidades a nuestras clases sin obligarnos a adaptarnos a las clases o los métodos heredados. De todas formas, a la hora de ampliar nuestra clase, debemos tener cuidado de no cambiar la interfaz de esta si ya está siendo utilizada por una aplicación ya que, al no encontrar los métodos o propiedades de la clase original, dejaría de funcionar. Veamos : la aplicación que utiliza nuestra clase "no verá" el código que hay dentro de cada método, por lo tanto, lo podemos ampliar o mejorar pero sí debemos mantener la estructura de la interfaz "antigua" o como mínimo, las clases que sabemos que están siendo utilizadas por otro programa o clases.

Para entenderlo mejor volvamos a molestar a los gatos del primer capítulo.

Teníamos  una clase Gato con propiedades como peso, hambre y capacidad de comer. Todas estas propiedades las implementamos desde cero ya que desconocíamos la existencia de la clase  Animales  creada por otro programador y lista para ser heredada por nuestras nuevas clases. Animales se denominaría clase primaria, o clase base y nuestra clase Gato que heredaría de Animales  sería la subclase, o clase derivada.

 

Ejemplos

Vamos a crear nosotros mismos la clase Animales con unas propiedades básicas que pueda tener todo animal.

 

 

 

Public Class Animales

 

     Public color As String, peso As Int16, hambre As Boolean

     Public Sub SoyA()

         Console.WriteLine("Soy un Animal (clase primaria)")

     End Sub

 

End Class

 

 

Una vez creada la clase base Animales ampliaremos más nuestra jerarquía, antes de heredar desde Gato, dividiendo a los animales en otra subclase a la que llamaremos Felinos :

 

 

 

Public Class Felinos

    Inherits Animales

    Public Const NumeroPatas As Integer = 4

    Public  Dim Cola As Boolean = True

   

     Public  Sub SoyF()

         Console.WriteLine("Soy un felino ")

     End Sub

End Class

 

 

 

La clase Felinos ahora hereda de Animales por lo tanto, los métodos y propiedades (interfaz) de la clase primaria Animales son accesibles desde la subclase Felinos y de todas las clases que hereden de esta última. Hemos añadido dos nuevas propiedades a esta clase que se sumarán a las de la clase primaria (NumeroPatas y Cola). Una de ellas, NumeroPatas, será de valor constante y la siguiente propiedad Cola será variable pero con el valor true por defecto. Estas dos propiedades simplemente nos serán de utilidad para "jugar" con ellas desde la aplicación principal y ver como se heredan las propiedades utilizando varios niveles jerárquicos.

 

Veamos el código que instanciará la clase Felinos.

 

 

 

Sub Main()
        Dim Gato As New felino()
 

          Gato.SoyA()

          Gato.SoyF()

          Console.WriteLine(Gato.Npatas)


    End Sub

 

 

Al ejecutar la aplicación la consola nos mostrará el siguiente resultado :

 

 

Soy un Animal (clase primaria)

Soy un Felino

4

 

 

Como vemos desde la aplicación principal podemos acceder a todos los miembros de las clases heredadas ya sean clases primaria o derivadas.

Una vez vista la herencia básica te recomiendo que eches un vistazo al ejemplo del artículo herencia II.

 

 

 

Este sitio se actualizó por última vez el 05 de agosto de 2003