Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Java permite apuntar a un objeto con una variable public class Empleado extends Object
public class Jefe extends Empleado
definida como tipo de clase padre.
public class Contractor extends Empleado
Empleado e = new Jefe ();
Sólo se puede acceder a las partes del objeto que public void método (Empleado e){
pertenecen a la clase Empleado; las partes if (e instanceof Jefe) {
// Obtiene beneficios por su salario
específicas de la clase Jefe no se ven. Este efecto
}
se consigue porque, para el compilador, e es sólo else if (e instanceof Contractor) {
una variable de tipo Empleado, no Jefe. //Obtiene tarifa por horas
e.departamento = "Finanzas"; }
//Incorrecto else {
//empleos temporales
}
Tema 7. Polimorfismo en Java. } Tema 7. Polimorfismo en Java.
LPS 2005. 3 LPS 2005. 4
1
Conversión de objetos Casting
public void método (Empleado e){
Casting automático
if (e instanceof Jefe) { Loro c = new Loro();
Jefe m = (Jefe) e; Animal a = c;
System.out.println("Este es el Animal
director de " + Se necesita casting explícito
m.departamento); Animal a = new Loro();
} Loro c = (Loro) a;
//resto de la función
Error de compilación:
} Loro c = new Loro();
Si no se hace la conversión y se intenta acceder a Gato d = (Gato) c; Loro Gato
e.departamento el compilador no encuentra el miembro
departamento en la clase Empleado.
Tema 7. Polimorfismo en Java. Tema 7. Polimorfismo en Java.
LPS 2005. 7 LPS 2005. 8
•Tipo de retorno }
public class Jefe extends Empleado{
•Lista de argumentos String departamento;
Recordar que los métodos, con el mismo nombre y lista de public String getDetails() {
argumentos distinta, dentro de la misma clase, se denomina return "Nombre: " + nombre + "\n" + "Departamento: "
sobrecarga. La lista de argumentos es lo que indica al + departamento;
compilador que se invoca.
Tema 7. Polimorfismo en Java. } Tema 7. Polimorfismo en Java.
LPS 2005. 9 LPS 2005. 10
}
2
Sobreescritura de métodos Sobreescritura de métodos
public class Padre {
Para poder sobreescribir métodos en las clases
decendientes se debe verificar: public void método (){ }
}
•El tipo de retorno de los dos métodos ha de ser igual.
public class Hijo extends Padre {
•El método de la subclase no puede ser menos accesible public void método (){ }
que el de la clase padre.
\\no puede ser private
•El método de la subclase no puede provocar más
excepciones que el método del padre. }
public class OtraClase{
public void otroMetodo(){
Padre p1 = new Padre();
Padre p2 = new Hijo();
Tema 7. Polimorfismo en Java.
p1.método();
Tema 7. Polimorfismo en Java.
LPS 2005. 13 p2.método(); LPS}} 2005. 14