Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de Trujillo
Herencia
CLASE 04
Herencia
Ventajas de la Herencia
Entre las principales ventajas que ofrece la herencia en el desarrollo de
aplicaciones están:
Nomenclatura y Reglas
En POO, a la clase que va a ser heredada se le llama clase padre,
superclase o clase base, mientras que a la que hereda se le conoce
como clase hija, subclase o clase derivada.
Nomenclatura y Reglas
Utilizando la notación UML, la herencia entre dos clases se representa
como una flecha saliendo de la subclase hacia la superclase.
Clase Padre
Generalización/Especialización
Clase Hija
Reglas Básicas
Hay unas reglas básicas sobre la herencia en Java que hay que tener presentes
• En Java se implementa la herencia simple.
• En Java no se puede implementar la herencia Múltiple, aunque puede
simularse.
• Si es posible la herencia multinivel, es decir, A puede ser Heredada por B y
B puede ser heredada por C.
• Una clase puede ser heredada por varias clases: una clase padre puede
tener varias clases hijas.
La Clase Object
Todas las clases de Java heredan alguna clase. En caso de que no se
especifique mediante extends la clase que se va a heredar, implícitamente
hereda de Object.
La clase Object es, por tanto, la superclase de todas las clases de Java.
Como norma universal, cada vez que en Java se crea un objeto de una clase,
antes de ejecutarse el constructor de dicha clase se ejecutará primero el
de su superclase.
10
Ejemplo de herencia
public class Primera {
public Primera() {
System.out.println(“Constructor de la superclase”);
}
}
11
Ejemplo de herencia
public class Principal {
public static void main(String args[]) {
Segunda s = new Segunda();
}
}
Aparecerá en la pantalla:
Constructor de la superclase
Constructor de la subclase
12
Ejemplo de herencia
La explicación a esta situación la tenemos en el hecho de que el compilador
java, añade, como primera línea de código en todos los constructores de una
clase la siguiente instrucción:
super();
Los constructores por defecto también incluyen esta instrucción, así pues, el
aspecto real de estos constructores es:
public NombreClase() {
super();
}
13
Ejemplo de herencia
Si en vez de llamar al constructor sin parámetros quisiéramos invocar a
cualquier otro constructor de la superclase, deberíamos hacerlo
explícitamente, añadiendo como primera línea del constructor de la subclase
la instrucción:
super(argumentos)
14
15
Sobreescritura de Métodos
Cuando una clase hereda de otra, el comportamiento de los métodos que
hereda no siempre se ajusta a las necesidades de la nueva clase. En estos
casos, la subclase puede optar por volver a reescribir el método
heredado, es lo que se conoce como sobreescritura de un método.
16
17
20
21
Clases Finales
Si queremos evitar que una clase sea heredada por otra, deberá ser declarada
con el modificador final delante de class:
public final class ClaseA {
….
}
22
Métodos abstractos
Tenemos un método f() aplicable a todos los objetos de la clase A.
Área de un polígono.
23
Clases Abstractas
Si una clase contiene al menos un método abstracto, entonces es una clase
abstracta.
Una clase abstracta es una clase de la que no se pueden crear objetos,
pero puede ser utilizada como clase padre para otras clases.
Declaración:
public abstract class NombreClase {
..............
}
24
Alumno
alumno
-curso profesor
Profesor
-nivelAcademico -asignatura
+cambiarCurso() +toString() : String
+toString() : String
+pagoMensual() : double
+mostrarAsignaturas()
libre
Libre presencial
Presencial
-listaAsignaturas -matriculaCurso
-precioPorHora -noConvocatoria
-noHorasDiarias -plusPorConvocatoria
-pedirAsignaturas() +pagoMensual() : double
+pagoMensual() : double +mostrarAsignaturas()
+mostrarAsignaturas()
25
26
27
28
29
30
31
Interfaces
Podría suceder que los objetos de varias clases compartan la capacidad de
ejecutar un cierto conjunto de operaciones.
Y dependiendo de la clase de objeto, cada operación se realice de diferente
manera.
Ejemplo:
Clases: Circulo, Elipse,Triangulo, ....
Todas esas clases incluyen los métodos: área, perimetro, cambiarEscala,
etc.
Podríamos definir una interfaz común que agrupe todos los métodos
comunes (como métodos abstractos).
Y luego definir varias clases de modo que implementen una misma interfaz.
32
Ejemplo de Interface
33
Ejemplo de Interface
public class Cuadrado implements Figura {
private double lado;
34
Ejemplo de Interface
public class Circulo implements Figura {
private double radio;
private final double PI=3.1416;
35
Interfaces
• Se pueden declarar referencias a objetos que implementen una cierta
interfaz.
36
Interfaces
37
38
39
40
41
42