Академический Документы
Профессиональный Документы
Культура Документы
1.
1.
1.
1.
1.
1.
Defi nicin
Alternativas a la sobrecarga
Polimorfi smo en jerarquas de herencia
Redefi nicin
Shadowing
Sobrescritura
Variables polimrfi cas
La variable receptora
Downcasting y RTTI
Mtodos genricos
Plantillas de clase
Curso 11-12
49
Curso 11-12
50
Variables Polimrficas.
Clase polimrfica
Curso 11-12
51
Variables Polimrficas.
Variables receptoras:
this y super
Curso 11-12
52
Variables Polimrficas
Curso 11-12
53
Variables Polimrficas
Downcasting dinmico
Curso 11-12
54
Variables Polimrficas
Curso 11-12
55
Variables Polimrficas
Curso 11-12
56
Variables Polimrficas
// Downcasting seguro
Animal a = new PastorBelga();
if (a.getClass() == PastorBelga.class) // cierto
{ PastorBelga pb = (PastorBelga)a; }
if (a.getClass() == Perro.class) // falso
{ Perro p = (Perro)a; }
Curso 11-12
57
Variables Polimrficas
RTTI: instanceof
Instruccin que devuelve cierto si el objeto
referenciado es del tipo indicado
class Animal {}
class Perro extends Animal {
public void ladrar() {}
}
class PastorBelga extends Perro {}
// Downcasting seguro
Animal a = new PastorBelga();
if (a instanceof PastorBelga) // cierto
{ PastorBelga pb = (PastorBelga)a; }
if (a instanceof Perro) // cierto
{ Perro p = (Perro)a; }
Curso 11-12
58
Variables Polimrficas
RTTI:
Class.isInstance(): instanceof dinmico
instanceof necesita conocer el nombre de la
clase objetivo en tiempo de compilacin
y si no lo conozco?
// Downcasting seguro
Animal a = new Perro();
Animal b = new PastorBelga();
Class clasePerro = a.getClass();
if (clasePerro.isInstance(b)) { //cierto
Perro p = (Perro)b; // seguro
p.ladrar();
}
Curso 11-12
59
Curso 11-12
64
Curso 11-12
65
Curso 11-12
66
Curso 11-12
67
Qu ocurre?
Curso 11-12
68
71
Curso 11-12
72
73
74
75
Polimorfismo
Los mtodos con enlace dinmico son algo menos eficientes que las
funciones normales.
Curso 11-12
76
Polimorfismo
Ventajas
Curso 11-12
77
Indice
1.
1.
1.
1.
1.
1.
Signatura
mbito
Sistema de tipos
Polimorfi smo y reutilizacin
Defi nicin
Alternativas a la sobrecarga
Polimorfi smo en jerarquas de herencia
Redefi nicin
Shadowing
Sobrescritura
Variables polimrfi cas
La variable receptora
Downcasting
Mtodos genricos
Plantillas de clase
Curso 11-12
78
Genericidad
Motivacin
Curso 11-12
79
Genericidad
Motivacin
a1 = new
b1 = new
mayorA =
mayorB =
Curso 11-12
Genericidad
Motivacin
Curso 11-12
81
Genericidad
DEFINICION
Curso 11-12
82
Genericidad en Java:
Genricos
Curso 11-12
83
Genericidad
Mtodos genricos
Un argumento genrico
public <T> void imprimeDos(T a, T b)
{
System.out.println(
"Primero: "
+ a.toString() +
" y Segundo:" + b.toString() );
}
84
Genericidad
Mtodos genricos
Ms de un argumento genrico
public <T,U> void imprimeDos(T a, U b)
{
System.out.println(
"Primero: "
+ a.toString() +
" y Segundo:" + b.toString() );
}
Curso 11-12
85
Genericidad
Curso 11-12
86
Genericidad
Curso 11-12
87
Genericidad
Creacin de objeto:
Curso 11-12
88
Genericidad
Curso 11-12
89
Genericidad
T info[];
int cima;
static final int limite=30;
Curso 11-12
90
Genericidad
Curso 11-12
91
Genericidad
Curso 11-12
92
Genericidad
93
Genericidad
Curso 11-12
new DoblePila(10);
94
Genericidad
Curso 11-12
95
Genericidad
class Uno {}
class Dos extends Uno {}
Curso 11-12
96
Genericidad
Borrado de tipos
Sin embargo,
ArrayList<Integer> v = new ArrayList<Integer>();
ArrayList<String> w = new ArrayList<String>();
System.out.println(
v.getClass() == w.getClass() );
// imprime 'true'
//v = w; // Error: incompatible types
Curso 11-12
97
Genericidad
Interfaces genricas
interface Factoria<T>
{ T newObject(); }
class FactoriaDeAnimales implements Factoria<Animal>
{
Animal newObject() {
if () return new Perro();
else if () return new Gato();
else return new ProgramadorDeJava();
}
}
Curso 11-12
98
Genericidad
Genericidad restringida
Curso 11-12
99
Genericidad
Comodines
Comodines de subtipo
List<? Extends Fruit> flist =
new ArrayList<Apple>();
flist.add(new Apple()); // ERROR
flist.get(0); // retorna un fruit
Curso 11-12
100
Genericidad
Comodines
Curso 11-12
101
Tema 4. Polimorfismo
Bibliografa
T. Budd.
Captulo 4
Bruce Eckl
Curso 11-12
Cap. 8, 14 y 15
108