Está en la página 1de 30

CAPÍTULO 4 Herencia y

Polimorfismo
4 . 1 HE R ENCI A MI E M BROS DE P R I VATE, M É TODOS S OBR E ESCRI TOS
4 . 2 HE R ENCI A MI E MBROS DE CLAS E STATIC , MÉ TODOS S OBR E ESCR ITOS
4 . 3 S UP ERCLASES Y S U BCL A SES
Objetivos
Comprender cómo la herencia fomenta la reutilización de software.
Entender qué son las superclases y las subclases.
Comprender el uso del modificador de acceso protected para dar a los
métodos de la subclase acceso a los miembros de la superclase.
Comprender cómo se utilizan los constructores en las jerarquías de
herencia.
Herencia en Java
Es una de las características de la POO.
Representar comportamiento en común
Evitar duplicar el código
Diseñar clases más parecidas al mundo real
Herencia en Java
La herencia permite representar características o comportamiento en
común entre clases, permitiendo definir en la clase Padre (superclase) los
atributos o métodos que sean comunes a las clases hijas (subclase), las
cuales heredarán estos atributos o métodos definidos en la clase Padre.
“Es un”
Herencia en Java
public class Persona
public class Empleado extends Persona
public class Gerente extends Empleado
Superclase - subclase
Una subclase generalmente agrega sus propios campos y métodos.
Una subclase es más específica que su superclase y representa a un grupo
más especializado de objetos.
Generalmente, la subclase exhibe los comportamientos de su superclase
junto con comportamientos adicionales específicos de esta subclase.
Superclase
La superclase directa es la superclase a partir de la cual la subclase hereda
en forma explícita.

En Java, la jerarquía de clases empieza con la clase Object (en el paquete


java.lang), a partir de la cual se extienden (o “heredan”) todas las clases
en Java, ya sea en forma directa o indirecta.
Miembros public - private
Los miembros public de una clase son accesibles en cualquier parte en
donde el programa tenga una referencia a un objeto de esa clase, o una
de sus subclases.
 Los miembros private de una clase son accesibles sólo dentro de la
misma clase.
Los miembros private de una superclase no son heredados por sus
subclases.
Miembros protected
El uso del acceso protected ofrece un nivel intermedio de acceso entre
public y private.
Los miembros protected de una superclase pueden ser utilizados por los
miembros de esa superclase, por los miembros de sus subclases y por los
miembros de otras clases en el mismo paquete.
Determinar el acceso a los miembros de
la clase
Constructores en una subclase
Para llamar a un constructor de una superclase, se usa la palabra
reservada super seguida de paréntesis y una lista de argumentos
separados por comas que se desea pasar al constructor.
Las llamadas a super están permitidas sólo en un sitio particular. Sólo
están permitidas desde el interior de un constructor, y deben ser la
primera línea dentro de un constructor.
Constructores en una subclase
Siempre que se llama a un constructor, la JVM ejecuta en forma
automática el árbol de jerarquías hasta el constructor abuelo más grande
y ejecuta primero el constructor abuelo más grande.
Luego ejecuta el código en el constructor que está abajo de él y así
sucesivamente, de modo que finalmente ejecuta el resto del código en el
constructor que se llamó originalmente
CAPÍTULO 4 Herencia y
Polimorfismo
4.4 CLASES Y MÉTODOS ABSTRACTOS
Clases y Métodos abstractos
Clase Abstracta:
Sólo se utiliza como clase padre (superclase) a partir de la cual heredan
otras clases
Estas clases no pueden utilizarse para instanciar objetos
Clases y Métodos abstractos
Método abstracto:
Cuando una clase tiene un método abstracto la clase también debe ser
abstracta

No se implementa en la clase padre, pero obligatoriamente debe


implementarse en la clase hijos.
Clases y Métodos abstractos
public abstract class Mascota {
// método abstracto
public abstract void alimentarse();

}
Clases y Métodos abstractos
Una declaración de un método abstracto no puede ser private.

Una clase abstracta o un método abstracto no pueden ser final. El


modificador final evita que una clase sea extendida e impide que un
método sea sobrepuesto.
CAPÍTULO 4 Herencia y
Polimorfismo
4.5 CLASES CONTENEDORAS
4.6 POLIMORFISMO
Clase contenedora
Una clase capaz de contener muchos objetos.
Polimorfismo
En una relación de herencia, un objeto de la superclase puede almacenar
un objeto de cualquiera de sus subclases.
La superclase es compatible con todos los tipos que derivan de ella. Pero
no al revés.
Polimorfismo es la habilidad de ejecutar métodos sintácticamente iguales
en tipos distintos.
Polimorfismo
Una variable de tipo de una clase padre
puede almacenar referencias de clases
hijas o del mismo tipo de la clase
padre, y mandar a llamar los métodos
que tiene en común utilizando
polimorfismo, es decir, ejecuta los
métodos de la clase hija, con la variable
de tipo de la clase padre.
Polimorfismo
Se ejecuta el método del tipo al que apunta en tiempo de ejecución.
Mascota p1=new Perro(1, "Fido", 3);
System.out.println(p1.toString());
Interfaces
Las interfaces de Java pueden hacer muchas cosas distintas, una de las
cuales es ayudar a implementar polimorfismo.
Una interfaz especifica qué operaciones están permitidas, pero no
determina cómo se realizan.
Una interfaz de Java describe a un conjunto de métodos que pueden
llamarse en un objeto.
Interfaces
La declaración de una interfaz empieza con la palabra clave interface.
Todos los métodos que se declaran en una interfaz son public abstract de
manera implícita, y todos los campos son public, static y final de manera
implícita.
Interfaces
Por lo general, una interfaz se utiliza cuando clases dispares (es decir, no
relacionadas) necesitan compartir métodos y constantes comunes.
Esto permite que los objetos de clases no relacionadas se procesen en
forma polimórfica, ya que los objetos de clases que implementan la
misma interfaz pueden responder a las mismas llamadas a métodos
Interfaces
Si una clase particular incluye una definición de todos los métodos
declarados en alguna interfaz

Para múltiples interfaces, los nombres se separan con comas, como:


Diagrama de clases de UML de la jerarquía de la interfaz PorPagar.

También podría gustarte