Unidad 3 Poo Herencia
Short Description
itt...
Description
Unidad III. Herencia
Programación Orientada a Objetos
III. Herencia Una de las propiedades más importantes de la programación orientada a objetos es la herencia, mecanismo que sirve para definir objetos basados en otros ya existentes. Java soporta la herencia mediante la extensión de clases que permite defini r una nueva clase basada en otra, sin modificar esta última.
3.1 Clase Base y Clase Derivada Una clase base es aquella que va a heredar sus propiedades a otra, y una clase derivada es la que recibe las propiedades de la clase base. En java, se denomina Superclase a la clase base y Subclase a la clase derivada. La superclase también se conoce como clase padre, y la subclase como clase hija, o extendida. La definición de una subclase como clase extendida es de la siguiente forma: Modificador_de_acceso class nombre_clasederivada extends nombre_clasebase { Cuerpo de la clase } Ejemplo: public class estudiante extends persona{
…..}
Qué hereda y qué no hereda una clase
Una subclase hereda todos los miembros de su súper c lase excepto los constructores.
Una subclase no tiene acceso a los l os miembros privados de su superclase.
Una subclase puede heredar a otras clases. A esto se llama propagación de herencia.
Una subclase puede agregar sus propios atributos y métodos. Si el nombre de alguno de estos miembros coincide con el de un mi embro heredado, este último queda oculto para la subclase.
3.2 Clasificación: Herencia Simple y Herencia derivada La herencia simple es aquella en la l a que una clase se extiende a partir de otra que es única. Es decir, un objeto hereda propiedades a partir de un solo objeto. Java soporta exclusivamente la herencia simple. Un objeto puede heredar propiedades de varias clases previamente definidas. Solo algunos lenguajes soportan estas características, como el lenguaje C++.
1 Instituto Tecnológico de Toluca
Lic. Alma Patricia Vásquez Glez.
Unidad III. Herencia
Programación Orientada a Objetos
3.3 Reutilización de miembros heredados La derivación de clases consigue la reutilización efectiva del código de la clase base para sus necesidades. Si se tiene una clase base totalmente depurada, la herencia ayuda a reutilizar ese código en una nueva clase. No es necesario comprender el código fuente de la clase original, sino sólo lo que hace.
3.4 Referencia al objeto de la clase base (Ver 3.6) 3.5 Constructores y destructores en clases derivadas En la herencia primero se ejecutan los constructores de las superclases de arriba abajo en la jerarquía y finalmente el de la subclase. Esto es porque una subclase contiene los atributos de la superclase y todos tienen que ser inicializado previamente. Razón por la que el constructor de la subclase tiene que llamar implícita o explícitamente al de la superclase. Cuando se han definido constructores con parámetro tanto en las subclases como en las superclases, seguramente se deberá construir el objeto de la subclase con valores determinados, en este caso la definición del constructor debe permite invocar explícitamente al constructor de la súper clase y esto se hace utilizando la palabra reservada “super”. Ejemplo: class figura { protected int num; public figura(int num) { this.num=num; } … } public class cuadrado extends figura { protected float medidal; protected String color; public cuadrado(float ml, int nl) //Un parámetro será para la subclase y otro para la superclase { super(nl); //Llamada a constructor de la superclase medida=ml; } … }
Destructores de clases heredadas Si se define en una subclase un método “finalize” para liberar los recursos asignados por dicha cla se, se
debe redefinir el método finalize en la superclase, y liberar también los recursos asignados por ella. 2 Instituto Tecnológico de Toluca
Lic. Alma Patricia Vásquez Glez.
Unidad III. Herencia
Programación Orientada a Objetos
El mejor lugar para invocar el método finalize de la súper clase es en la última línea del método finalize de la subclase, porque como la parte del objeto de la subclase se construye una vez que se ha construido la parte del objeto de la superclase, los vínculos existentes exigirán deshacer lo construido en forma inversa. Ejemplo: class clase_A { … protected void finalize () throws Throwable { System.out.println(“Recursos clase_A Liberados”); } } Definición de la Subclase: class clase_B extends clase_A { … protected void finalize () throws Throwable { System.out.println(“Recursos clase_B Liberados”); super.finalize(); } }
3.6 Redefinición de los miembros de las clases derivadas Es posible modificar la parte que se hereda en una clase, lo que se denomina redefinición de los elementos de la clase base. 1. La clase derivada puede definir un atributo con el mismo nombre que uno de la clase base y la definición en la subclase oculta el atributo en la superclase. 2. La clase derivada puede redefinir un método heredado, significa, volverlo a escribir en la subclase con el mismo nombre, la misma lista de parámetros y el mismo tipo del valor de retorno, pero su cuerpo será adaptado a las necesidades de la subclase. Cuando una subclase redefine un método, el método de las superclase se oculta pero si el número de parámetros o los tipos de datos son diferentes el comportamiento es el de la sobrecarga. No se puede redefinir un método en una subclase, haciendo que su control de acceso sea más restrictivo que el original. De acuerdo a esto un método que en la superclase, sea protegido en la subclase, puede ser protegido o público, si es público también tendrá que ser público. Para poder acceder a los atributos de la súper clase redefinidos, se deberá utilizar la palabra reservada “super” . Los elementos estáticos no se pueden redefinir. 3 Instituto Tecnológico de Toluca
Lic. Alma Patricia Vásquez Glez.
View more...
Comments