Documente Academic
Documente Profesional
Documente Cultură
Índice general:
Tema 1- Conceptos de Java para 1. Clases y Objetos en Java
El Principio de la Programación Orientada a Objetos de la Herencia y
Estructuras de Datos 2.
su Soporte en Java
3
3. El Polimorfismo en Java
4. Más Herencia en Java: Métodos y Clases Finales y Abstractos.
5. Herencia Múltiple: Interfaces Java
Germán Moltó
Escuela Técnica Superior de Ingeniería Informática
Uni ersidad Politécnica de Valencia
Universidad
1 2
public void setRadio(double nuevoRadio) { El uso de un método estático permite definirlo a nivel de
radio = nuevoRadio; clase, no a nivel de instancia (objeto individual).
} Se deberá invocar como Circulo.leerCirculo(...).
public void setColor(Color nuevoColor) {
color = nuevoColor; Utilizar diferentes nombres para el ¿Se podría utilizar this en la
} argumento y el atributo evita el aliasing y implementación del método area para
ya no es necesario utilizar this.
this referenciar al atributo radio?
13 14
19 20
Modificadores de Visibilidad: Tabla
Ejercicio de Modificadores de Visibilidad Resumen
23 24
Ejercicio de Persona
La relación ES UN(A) Ejemplo de relación ES UN(A)
Si X ES UN(A)
( ) Y, Jerarquía de clases de figuras:
Objeto
se dice que la Clase derivada X es una variación de la Clase base Y Un círculo ES UNA figura
se dice que X e Y forman una Jerarquía: X Y, donde la Clase X es Un rectángulo ES UNA figura
una subClase de Y e Y es una superClase de X Un cuadrado ES UN Rectángulo
Figura
la relación es transitiva: si X ES UN(A) Y e Y ES UN(A) Z, entonces
X ES UN(A) Z
Círculo Rectángulo
Y (Base) Ejemplo: ¿Qué relación guardan
entre sí un cuadrado, un triángulo, un La Herencia permite modelar una
círculo y un rectángulo?
g Cuadrado
relación de tipo ES UN.
UN
X (Derivada)
Permite definir una jerarquía de clases.
25 26
35 36
Ejercicio de Yogures
Polimorfismo en Java Enlace Dinámico
El polimorfismo es una consecuencia directa de la Herencia: Ante situaciones de sobreescritura de métodos, el método a
Una variable referencia de una clase Base puede referenciar a ejecutar
j es ell d
definido
fi id por ell tipo
i di dinámico
á i d de lla variable
i bl
objetos tanto de la clase Base como de cualquier clase Derivada de polimórfica.
esta.
Toda variable referencia tiene siempre dos tipos: Se aplica
p en tiempop de ejecución,
j , pprevia comprobación
p del
acceso en la clase del tipo estático.
Tipo estático:
El tipo con el que ha sido declarada la variable (nunca varía)
Tipo dinámico: ClaseBase ClaseBase cb = new ClaseDerivada();
El tipo del objeto al que referencia en tiempo de ejecución (puede variar) cb.miMetodo();
Si ambos tipos
p no coinciden, entonces la variable es ppolimórfica. +miMetodo()
Ejemplo:
Figura f = new Rectangulo();
La variable f es polimórfica:
Tipo estático: Figura ClaseDerivada Se ejecutará el código de miMetodo
Tipo dinámico: Rectángulo definido en ClaseDerivada.
+miMetodo()
()
37 38
Ya que f es de tipo dinámico Circulo, podemos realizar un System.out.println invocará al método toString de f, que
casting
g a tipo
p Circulo y, p
posteriormente,, invocar el originalmente
g está definido en la clase Object
j aunque
q ha
método radio. sido sobrescrito en la clase Figura (y luego en Circulo).
El operador casting () permite transformar una referencia de Se produce una conversión de ampliación.
un tipo
i a otro equivalente.
i l
El enlace dinámico garantiza que se ejecutará el
Si el tipo destino NO es equivalente (i.e. ((Cuadrado) f) ),
entonces se produce la excepción ClassCastException. correspondiente método de la clase Circulo.
41 42
45 46
53 54
public
bli class
l MisDias
Mi Di implements
i l Di S
DiasSemana
{
public int metodo(){
p (){
System.out.println(NOMBRE_DIAS[LUNES]);
}
}
59