Professional Documents
Culture Documents
Polimorfismo
Jerarqua de clases
Mtodos y clases abstractas
Enlace esttico y dinmico
Forzamiento hacia arriba (upcasting)
Forzamiento hacia abajo (downcasting)
Polimorfismo
M. en C. Rafael Aguilar Garca
Rafael Aguilar Garca ESCOM - IPN
Jerarqua de clases
2
Jerarqua de clases
3
La clase Figura no
puede ser instanciada
por ser una clase
abstracta
Los mtodos dibujar y obtenerArea son definidos por cada una de las clases
Circulo, Rectngulo y Tringulo. Estas clases pueden ser instanciadas por ser
Rafael Aguilar Garca ESCOM - IPN
clases concretas.
Jerarqua de clases
6
public Circulo () {
this(10.0);
}
public double obtenerArea() {
return ( PI * radio * radio );
}
10
1 class UsoFiguras{
2
public static void main (String[] args) {
3
Figura[] grupo = new Figura[3];
4
int mayor;
5
6
grupo[0] = new Circulo();
7
grupo[1] = new Rectangulo(55);
8
grupo[2] = new Triangulo(20,30);
9
10
for (int i=0; i<grupo.length; i++) {
11
System.out.println(grupo[i]);
12
System.out.println("Area: " + grupo[i].obtenerArea());
13
System.out.println("Dibujar:");
14
grupo[i].dibujar();
15
}
16
17
if (grupo[0].mayorQue(grupo[1])) mayor = 0;
18
else mayor = 1;
19
if (grupo[2].mayorQue(grupo[mayor])) mayor = 2;
20
System.out.println("La figura mayor es:");
21
System.out.println(grupo[mayor]);
22
}
23 }
11
Polimorfismo
12
Figura
Rafael Aguilar Garca ESCOM - IPN
Upcasting
13
Circulo
grupo
grupo[0]
upcasting
Circulo
Polimorfismo
14
Downcasting
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
17
class Animal {
void hacerRuido() {System.out.println(Ruido generico");}
}
class Can extends Animal {
void hacerRuido() {System.out.println(Ladrar"); }
void jugar()
{ System.out.println(Dar vueltas");}
}
class UsoDowncasting{
public static void main (String[] args) {
Downcasting
18