Herencia_Polimorfismo

Herencia Polimorfismo gy maitte18gE $eapa,1F 16, 2016 4 pagcs Herencia Las clases pueden ceder ciertas partes de su funcionalidad a otras clases, estas partes estarán limitadas por lo que conocemos como alcance. Este alcance dependerá de la forma como declaremos sus miembros: privados, públicos o protegidos. Los miembros que podrá ceder la clase a otras clases serán únicamente los miembros públicos (public) y protegidos (protected), y los que podrán utilizarse al exterior de la clase beneficiada, serán los públicos.

La clase que «hereda» no tendrá cceso a los declarados privados (private). La clase que hereda a otra es llamada clase base, y la clase que recibe la herencia es llamada clase derivada; así pues, podemos ver cómo una clase puede ser extendida en otra por medio de la herencia. Está cesión de funcio una clase hereda la c el alcance de sus mie estructura y comporr_ clase que hereda de ora aci m bros: o herencia, donde o en consideración se comparte la a clase.

Cada Los atributos de la clase base además de los propios. Soporta todos o algunos de los métodos de la clase base. Ejemplo de Herencia: /Esta es una clase base public class claseBase public void metodoA() //Tareas a realizar protected void metodoB() class claseDeribada : clasegase public vold metodoC() Uso de los miembros heredados: claseDerivada var = new ClaseDerivada(); var. metodoA(); «método heredado… var. metodoC(); //Este método es propio, no heredado… var. etodoB(); //ERROR!! el método no es heredado: está protegido… Aquí el método metodoB no podrá ser utilizado por la variable var dada la definición del alcance; sin embargo, será perfectamente útil dentro de la clase derivada. El propósito principal de la herencia es el de organizar mejor las clases que componen una determinada realidad, y poder agruparlas en función de atributos y comportamientos comunes a la vez que cada una se especializa según sus particularidades.

Ejemplo de Estructura de Clase: Como se puede observar, las clases clsTrabajadores y clsEstudiantes, heredan de la clase clsPersonas, por lo tanto las propiedades y métodos de esta última estarán presentes en las dos primeras. Las clases clsDocentes y clsServicio heredan de clsTrabajadores; por ende, poseerán los mismos atributos de ésta los de clsPersonas; pero no tienen acceso a los atributos de clsEstudlantes. Cabe aclarar además que hay dos tipos de herencias: Herencia Simple: una clase derivada puede heredar sólo de una clase base (los lenguajes .

NET soportan este tipo de herencia). Herencia Múltiple: una clas uede heredar de una o más clases base (C++ es un lenguaje que soporta este Es la propiedad que tienen los objetos de permitir invocar genéricamente un comportamiento (método) cuya implementación será delegada al objeto correspondiente recién instanciado en tiempo de ejecución. or medio de esta capacidad que tiene un objeto, éste puede representar, mediante un mismo método, más de un tipo de atributos o comportamiento.

Cuando una clase derivada hereda de una clase base, obtiene todos los métodos, campos, propiedades y eventos de la clase base. Muchas veces, al crear las clases y hacemos heredar una de otra, deseamos que la nueva clase que hereda, la clase derivada, no se comporte de igual forma que la clase base para determinado atributo. Sería inapropiado modificar la clase base; ya que las otras clases derivadas se verían afectadas… ?qué hacer?…

Para cambiar los datos y el comportamiento de una clase base, existen dos opciones: se puede reemplazar el miembro base por un nuevo miembro derivado o se puede reemplazar un miembro base virtual. Por el momento, nos limitaremos a la primera opción: Para reemplazar un miembro de una clase base por un nuevo miembro derivado, se requiere la palabra clave new. Si una clase base define un método, campo o propiedad, la palabra clave new se utiliza para crear una nueva definición de ese método, campo o propiedad en una clase derivada.

La palabra clave new se coloca antes del tipo de valor devuelto de un miembro de clase que se reemplaza. Por ejemplo: //definimos una clase base… public void metodoA() { } public int miEntero; public int miPropiedad get { return O; } 3Lvf4 int miPropiedad get { return 0; } //definimos una clase derivada de la anterior: public class claseDerivada : clasegase public new void metodoA { } public new int miEntero; public new int miPropiedad Cuando se utiliza la palabra clave new, se llama a los nuevos miembros de clase en lugar de los miembros de clase base ue se han reemplazado.

Esos miembros de la clase base se denominan miembros ocultos. Aún es posible llamar a los miembros de clase ocultos si una instancla de la clase derivada se convierte en una instancia de la clase base. Por ejemplo: //instanciamos el objeto: claseDerivada g new claseDerivada C); // Llamada al nuevo método definido en claseDerivada: g. metodoA C); //Convertimos una instancia de la clase derivada en una clase base: claseBase A = (claseBase)B; // Llama al método viejo que había sido definido en claseBase: A. metodoA (); Notas: