Documentos de Académico
Documentos de Profesional
Documentos de Cultura
S06 Herencia 0
S06 Herencia 0
DE SAN MARCOS
Facultad de Ingeniería de Sistemas e
Informatica
Herencia
Agenda
1. Introducción
2. Tipos
3. Jerarquías
4. Ventajas y Desventajas
5. Herencia en Java
6. La clase Genérica Object
7. Organización de las Clases
8. Referencias
1. Introducción
Es un mecanismo de la POO que permite construir una clase
incorporando de manera implícita todas las características de
una clase existente:
Modelado de la realidad. En el mundo real son frecuentes las relaciones
de generalización/especialización entre las entidades.
Evitar redundancias. Evita la repetición de código entre clases
semejantes
Facilitar la reutilización. Permiten reutilizar código agregando
características deseadas
Soporte al polimorfismo
1. Introducción. Definicion
• Herencia. La herencia permite definir clases (subclases)
a partir de otra clase mas genérica (superclase)
• La subclase reúne todas las propiedades de la
superclase, además de las suyas propias, añadiendo o
redefiniendo atributos y comportamiento.
• La herencia potencia la reutilización de código, genera
código mas fiable y robusto y reduce el costo de
mantenimiento.
• Es uno de los aspectos que distingue al paradigma OO
de otros paradigmas.
1. Introducción: Diagrama de clases
Persona
dni
Persona Nombre
direccion
Persona()
getDni()
Alumno getNombre()
Getdireccion()
B C
a4 a3
m4 m3
1. Introducción, definición
• Protección y herencia. Niveles de protección.
• Miembros públicos. Son accesibles desde la sub
clase,s y se heredan como públicos.
• Miembros privados. No son accesibles desde la sub
clases
• Miembros con acceso a nivel de paquete. Son
accesibles desde la subclase siempre y cuando
pertenezcan al mismo paquete que la clase padre. Se
heredan con el mismo nivel de protección
• Miembros protegido. Un miembro protegido es
accesible unicamente desde la sub clase
1. Introducción
• La herencia modifica el mecanismo de paso de
mensajes.
• Cuando un objeto de la una clase C se le pasa un
mensaje M, se busca un método M en la clase C.
• Si existe un método M en la clase C, se ejecuta ese método y termina
el proceso.
• Si en la clase C no hay ningún método M, se busca este en la
superclase de C.
• Si en la super clase de C existe un método M, se ejecuta ese método
y termina el proceso.
• Si en la superclase de C no hay ningún método M, se busca en las
super clases de la superclase hasta que o bien se encuentra y se
ejecuta o no se encuentra en ninguna de las superclases, de forma
que el objeto no entiende ese mensaje M, dando como resultado
ERROR.
2. Tipos
•Herencia Simple. . A
•Herencia Múltiple.
D E
• Una clase puede heredar de
varias clases
• Ejemplo; C++, Python, Eiffel C
2. Introducción
Persona Persona
Prof.Ayudante
H, Simple H. Múltiple
Una clase base Varias clase base
3. Jerarquías
•Especialización
• La clase debe relacionar mediante herencia con la
clase B si B es un A, entonces:
A Animal Mamífero Vehículo Figura
PostGrado PreGrado
Persona
class Alumno extends Persona{
...
}
Alumno
5. Herencia en Java
Persona
Diagrama de clase
AlumnoPre
1
THerencia
create>>
<<
1, 5
Curso
5. Herencia en Java
Se tiene la clase Persona, véase ejemplo:
class Persona{
private String nombre;
private String direccion;
private String fono;
class Persona{
String nombre;
private String direccion;
private String fono;
...
public String mostrarInfo(){
return "nombre : " + nombre +
“\n direccion : " + dirección +
"\n telefono : " + fono;
}
}
p1.mostrarInfo(); a1.mostrarInfo();
This vs super:
• La instrucción super es una facilidad del
lenguaje java para poder ejecutar constructores y
métodos heredados que han sido redefinidos .
• Una clase utiliza super para apuntar a su superclase
• super se utiliza para apuntar a los miembros de la
superclase
5. Herencia en Java
Metodos static de la clase :
• Un método static se puede llamar sin necesidad de una
instancia de la clase a la que pertenecen.
• Con los métodos static no se pueden utilizar el apuntador
this, ya que no se necesitan instancias.
• Los métodos static, solo pueden acceder a sus propios
argumentos y a las variables static.
• El método main() es estatic, porque la aplicación tiene
que acceder a él para ejecutarse, antes de que se realice
cualquier instancia.
• Los metodos static no se pueden sobre escribir.
5. Herencia en Java
Inicializadores static de la clase :
• Se puede utilizar bloques de código static {…}
• Una clase puede tener código static que no exista dentro
del cuerpo de un método ( caso anterior)
• El bloque static se ejecuta solo una vez, esto es, cuando
se carga la clase.
• Los diferentes bloques dentro de una misma clase, se
ejecutan en el orden en que aparecen.
5. Herencia en Java
La palabra clave final :
• Si se aplica esta palabra a una clase, esa clase no puede
tener subclases. Ej La clase java.lang.String, se ha
definido como clase final por motivos de seguridad.
• Los métodos calificados con final no se pueden redefinir
• Los métodos calificados como static o privates son final
automáticamente.
• Si una variable se define como final, se convierte en una
constante. Si se intenta cambiar el valor de cualquier
variable final, se produce un error
5. Herencia en Java
Visibilidad protected:
• En los ejemplos se han utilizado la visibilidad private que
limita a la subclase.
• La declaración protected es visible para la clase, las
clases del paquete y las subclases, estén o no en el
mismo paquete de la superclase.
• Es discutible si conviene o no la visibilidad protected.
• Da acceso a las clases del mismo paquete. Esto
supone un riesgo.
• Otro riesgo es que las subclases puedan hacer un
mal uso de los atributos comprometiendo la integridad
de los objetos.
• Otros dicen, que las clases del paquete y de las
subclases son “de confianza”
5. Herencia en Java
Visibilidad y redefinición:
• En la redefinición de un método podemos cambiar la
visibilidad de la declaración que se hereda.
• El cambio de visibilidad siempre es posible si se relaja la
visibilidad, esto es, de menos a mas.
• El orden de visibilidad es:
• private < package < protected < public
6. Clase G. Object
Todas las clases en Java heredan implícitamente de la
clase Object
• De esta forma, Object es la raíz de la jerarquía de
herencia (de implementación ) en Java
6. Clase Genérica Object
Object define un conjunto de métodos útiles que pueden ser
redefinidos en cada clase, por ejemplo:
• public boolean equals (object ob): Permite definir el
criterio de igualdad utilizando para los objetos de una
determinada clase (el operador == únicamente chequea la
igualdad de referencias). En objects, equals se define
directamente como la identidad de referencias.
• public String toString(): Permite decidir la
representación externa de un objeto como una cadena.
Por defecto es el valor de su referencia etiquetada con el
nombre de la clase.
Investigue y aplique a los objetos de tipo Object
7. Organización de las Clases
La biblioteca estándar de Java
• Incluye cientos de clases organizadas en varias paquetes
(package).
Package Descripción
java.io Clases para realizar operaciones de
entrada/salida
…
7. Organización de las Clases
Control de Acceso a miembros de una clase
public SI SI SI SI
protected SI SI SI
default/paquete SI SI
private SI
Referencias
Ceballos Sierra, Francisco Javier. (2000), Java 2. Curso de
Programacion. Alfaomega Grupo Editor S. A. Madrid.
España.
Deitel M. Harvey y Deitel J. Paul .(2008). Java Como
Programar. Prentice Hall. Mexico D. F.
Rumbaugh James, Blaha Michael, Premerlani William,
Eddy Frederick and Lorenson William,(1991) Object-
Oriented Modeling and Design, Prentice Hall