Colabora
 

Herencia en .Net

[Fundamentos de Herencia en La POO de .Net]


Fecha: 18/Oct/2007 (12-oct-07)
Autor: Quispe Flores Johnny B.
Email: [email protected]


Herencia.Net

En el termino comun Herencia se refiere al: Hecho de dejar o dar algo a alguien especificado o a muchos para que ese mismo resto herede o lo utilize....uhmmmm y en terminos informaticos no varia mucho la cosa, pero la idea se profundiza mucho mas..

Veamos!!! Visual Studio.Net es compatible con la herencia, la capacidad de definir clases que sirvan como base para las clases derivadas. Las clases derivadas heredan y pueden extender, las propiedades, metodos y eventos de las clase base.

Las Clases derivadas tambien pueden reemplazar metodos heredados con nuevas implementaciones. De forma predeterminada, todas las clases creadas con Visual Studio .Net se pueden heredar.

La Herencia permite escribir y depurar una clase una vez, y despues volver a utilizar ese codigo una y otra vez como base de nuevas clases.

La Herencia tambien permite utilizar el polimorfimo basado en la herencia, la posibilidad de definir clases que puedan utilizarse de forma intercambiable mediante codigo cliente en tiempo de ejecucion, pero con funcionalidad diferente, incluso con metodos o propiedades denominados de manera identica.

Las Clases que sirven de base de nuevas clases se denominan Clases base. Las Clases que se derivan de clases base de denominan Clases Derivadas..
Las Clases Derivadas Heredan todos los cmapos, propiedades, metodos y eventos definidos en la clase base. Esto Significa que puede desarrollar y depurar una clase una vez y reutilizar despues como base de otras clases.

Fundamentos de la Herencia

La Instruccion Inherits se utiliza para declarar una nueva clase, denominada clase derivada, basada en una clase existente conocida como case base. Las Clases derivadas heredan, y pueden extender las propiedades, metodos, eventos, campos y constantes definidos en la clase base. En la siguiente seccion describire algunas de las reglas de herencia, asi como los modificadores que se pueden utilizar para cambiar la forma en que las clases heredan o son heredadas:

• De forma predeterminada, todas las clases son heredables a menos que se marquen con la palabra Clave NotInheritable. Las Clases pueden heredar de otras clases del proeycto o de clases en otros ensamblados a los que hace referencia el proyecto.

• A diferencia de los enguajes que permiten la herencia multiple, Visual Basic.Net solo permite la herencia simple en las clases; es decir las clases derivadas solo pueden tener una clase base . Aunque no se permite la herencia multiple en las clases, estas pueden implementar multiples interfaces, lo que permite lograr de manera eficaz los mismos fines.

• Para evitar la exposicion de elementos restringidos en una clase base, el tipo de acceso de una clase derivada debe ser igual o mas restrictivo que e de su case base. Por Ejemplo, una clase Public no puede heredar una clase Friend o Private, y una clase Friend no puede heredar una clase Private.

Modificadores de Herencia

Visual Basic.Net Presenta las siguientes instrucciones y modificadores de nivel de clase para ofrecer compatibilidad con la herencia:

• Instruccion Inherits: Especifica la Clase Base.

• Modificador NotInheritable: Impide que los Desarrolladores Utilicen la Clase como Clase Base.

• Modificador MustInherit: Especifica que las clase solo se puede utiizar como clase base. Las nstancias de las clase MustInherit noo se pueden crear directamente; solo se pueden crear como instancias de clase base de una clase derivada. Otros Lenguajes de Programacion, como C++ y C#, utilizan el termino Clase Abstracta para describir tal clase.

La Palabra Clave MyBase

Puede Utilizar la Palabra Clave MyBase para llamar a metodos de una clase base cuando reemplace metodos en una clase derivda. Por Ejemplo, supongams que diseρa una clase derivada que reemplaza una metodo de la clase base. El metodo reemplazado puede llamar al metodo de la clase y modificar el valor devuelto como se muestra en el fragmento de codigo siguiente.

Class Clasederivada
Inherits ClaseBase
Public Overrides Function Calcularpromedio(Byval Nota1 as Double,Byval Nota2 as Double) As Double
'Llamar al metodo en la Clase base y modificar el valor de retorno.
Return MyBase.Calcularpromedio(Nota1,Nota2)
End Function
End Class


Acontinuacion describire las restrincciones que hay que tener en cuenta para el uso de MyBase

• MyBase Hace referencia a la clase base inmediata y a sus miembros heredados. No se puede utilizar para tener acceso a miembros Private de la Clase

• MyBase Es una Palabra Clave, no un Objeto real. MyBase no se puede puede asignar a una variable, pasar a procedimientos ni utilizar en una comparacion Is

• No es Necesario definir el metodo al que califica MyBase en la clase base inmediata; puede definirse en una clase base heredada indirectamente. Para compilar correctamente una referencia calificada mediante MyBase, alguna clase base debe contener un metodo correspondiente al nombre y el tipo de los parametros que aparezcan en la llamada.

• No se puede utilizar MyBase para llamar a metodos dela Clase base con el modificador MustOverride.

• No se puede utilizar MyBase para calificarse a si misma. Por tanto, el siguiente codigo no es valido.

MyBase.MyBase.btnaceptar_Click() 'Error de Sintaxis...

• No se puede utilizar MyBase en modulos.

• No se puede utilizar MyBase para tener acceso a miembros de clase base marcados como Friend si la clase base esta en un ensamblado diferente.

La Palabra Clave MyClass

La Palabra clave MyClass permite llamar a un metodo Overridable implementando en la clase y asegurarse de que se llama ala implementacion del metodo en esta clase y o a la de un metodo reemplazado en una clase derivada.

• MyClass Es una palabra clave, no un objeto real. no se puede asignar a una variable, parasar a procedimientos ni utilizar en una comparacion Is

• MyClass Hace referencia a las clase base inmediata u a sus miembros heredados.

• MyClass Puede Utilizarse como calificador de miembros Shared

• MyClass no se puede utilizar en modulos estandar.

• MyClass puede utilizarse para calificar un metodo que esta definido en una clase base y que no tiene ninguna implementacion del metodo proporcionado en esa clase. Tal referencia tiene el mismo significado que MyBase.Method.

Bueno y con esto termino..

La Instruccion Inherits

que no se te olvide que la palabra clave Inherits hace que la clase o interfaz actual herede los atributos, campos, propiedades, metodos y eventos de otra clase o interfaz. Su Sintaxis es:

Inherits nombre_de_tipo

donde nombre_de_tipo es el nombre de la clase o interfaz que va a heredar la clase o interfaz en la que se utiliza la instruccion Inherits.



Espero te halla sido de utilidad este Articulo..... nos veremos en la Proxima Entrega

Saludos Quispe Flores Johnny B.
"No pienses en las Cosas que tienes, Piensa en las cosas que te hacen falta.."
Cualquier duda o Sugerencia te agradeceria muchisimo que me la hicieras saber a mi email: [email protected]
Saludos Quispe Flores Johnny B.!!!