Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEMA 5 Polimorfismo
TEMA 5 Polimorfismo
03/14/202 2
4
La palabra clave super
03/14/202 3
4
Palabra clave Super - ejemplo
public class Alfa {
System.out.println("-------------------------");
}
}
public class Beta extends Alfa {
03/14/202 5
4
Constructores y la palabra super
Alfa
:Beta
-a: Integer b1
-b: Integer
c = 10 (Beta)
:Alfa
a=5
Beta
b=8
-c: Integer
03/14/202 6
4
Constructores y la palabra super
public class Alfa {
private int a, b;
private int c;
public Beta(int c) {
super(5, c);
this.c = c;
}
03/14/202 7
} 4
Constructores y la palabra this
public class Alfa {
private int a;
private double b;
public Alfa() {
a = 0;
b = 0.0; Alfa alfa1 = new Alfa();
}
Alfa alfa2 = new Alfa(5);
public Alfa (int a) {
Alfa alfa3 = new Alfa(3.0);
this();
this.a = a; alfa1 = new Alfa(6);
alfa2 = new Alfa(6.0);
}
public Alfa(double b) {
this();
this.b = b; 03/14/202 8
4
}
}
Constructores y la palabra this
public class Alfa { public class Beta extends Alfa {
private int a;
private double b; private int c;
} }
public Alfa(double b)
{ Beta beta1 = new Beta();
this(); Beta beta2 =03/14/202
new Beta(3);
9
4
this.b = b;
}
Polimorfismo
03/14/202 10
4
El Elefante Celebes - Max Ernst
Polimorfismo
03/14/202 11
4
Conversión de tipos
03/14/202 12
4
Conversión de tipos
03/14/202 13
4
Conversión de tipos - Ejemplo
private void convertirImplicito() {
float x = 5.8f;
int y = 10;
x = y;
System.out.println(x);
}
y = (int) x;
System.out.println(y);
} 03/14/202 14
4
Conversión de tipos - Objetos
03/14/202 15
4
Recordar ejemplo jerarquía animal
Animal
+comer()
+dormir()
+desplazarse()
+hacerRuido()
Felino Canino
+desplazarse() +desplazarse()
03/14/202 17
4
Conversión Ascendente – referencias e
instancias
Enlace del objeto
y la variable
03/14/202 18
4
Conversión Ascendente – referencias e
instancias
03/14/202 19
4
Conversión Ascendente
lobito :Lobo
(Lobo)
:Canino caninito
animalito (Canino)
(Animal)
:Animal
03/14/202 20
4
Permite ver un objeto de una subclase como un objeto de una superclase
Conversión descendente
:Lobo
lobito animalito
(Lobo) (Animal)
:Animal
03/14/202 21
4
Permite ver un objeto de una superclase como un objeto de una subclase
Enlace dinámico
03/14/202 22
4
Enlace dinámico
Sea una clase Beta que hereda de una clase Alfa.
Sea un método m() definido en Alfa y redefinido en Beta
Sea a1 una instancia de Alfa y b1 una instancia de Beta
Si se realiza la conversión ascendente a1 = b1;
La invocación del método m sobre a1 a través de a1.m() ejecuta el
código definido en la clase B
Permite guardar en una estructura de datos toda una jerarquía y que
los objetos se comporten según la sub clase real
03/14/202 23
4
Ejemplo Enlace Dinamico
public void testDinamico() {
Animal[] animales = new Animal[4];
} 03/14/202 25
4
Clases Felino y canino
}
public class Canino extends Animal {
03/14/202 26
4
Clases Leon y Gato
} 03/14/202 27
4
Clases Perro y Lobo
}
03/14/202 28
4
Ejemplo Polimorfismo - Conversión
private void test1() { private void test2() {
Canino can1 = new Canino(); Canino can1 = new Canino();
can1.hacerRuido(); lobo1.hacerRuido();
can1 = lobo1; lobo1 = can1;
can1.hacerRuido(); lobo1.hacerRuido();
} }
private void test3() { private void test4() {
Canino can1 = new Canino(); Canino can1 = new Lobo();
lobo1.hacerRuido(); lobo1.hacerRuido();
lobo1 = (Lobo) can1; lobo1 = (Lobo) can1;
lobo1.hacerRuido(); lobo1.hacerRuido();
} }
03/14/202 29
4
"Para que pueda surgir lo posible. Es preciso intentar una y otra
vez lo imposible". (Hermann Hesse)