Herencia
|
|
|
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 FelinosInherits 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() Gato.SoyA() Gato.SoyF() Console.WriteLine(Gato.Npatas)
|
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