t15 - polimorfismo
DESCRIPTION
Polimorfismo JavaTRANSCRIPT
![Page 1: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/1.jpg)
Tema – 15Polimorfismo
![Page 2: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/2.jpg)
15.1. Introducción
• El polimorfismo es una de las propiedades más importantes de la programación orientada a objetos.
• El polimorfismo nos permite programar de forma general, en lugar de hacerlo de forma específica.
• Consiste en que al hacer una llamada a un método, tendrá un comportamiento u otro dependiendo del contexto en el que se halle.
• El polimorfismo va muy ligado con la herencia.
PROGRAMACIÓN – Daniel Santiago 2
![Page 3: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/3.jpg)
15.2. Formas de polimorfismo
• El polimorfismo se puede dar de las siguientes formas:
– Sobrecarga.
– Sobre-escritura.
– Ligadura dinámica.
PROGRAMACIÓN – Daniel Santiago 3
![Page 4: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/4.jpg)
15.3. Sobrecarga
• Este tipo de polimorfismo se da cuando una clase tiene métodos sobrecargados, es decir, métodos con el mismo identificador pero que difieren en el tipo que devuelve o en los parámetros que recibe.
• La misma llamada a un método actuará de una forma u otra en función de los parámetros que reciba dicho método.
PROGRAMACIÓN – Daniel Santiago 4
![Page 5: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/5.jpg)
15.3. Sobrecarga
• Ejemplo:class Empleado{
private int identificador;private String nombre;
/*Tenemos dos constructores. Se ejecutará uno u otro en función de los parámetros que usemos en la llamada al
método*/public Empleado(){}public Empleado(int id, String nombre){
this.identificador = id;this.nombre = nombre;
}}
PROGRAMACIÓN – Daniel Santiago 5
![Page 6: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/6.jpg)
15.4. Sobre-escritura
• La sobre-escritura tiene relación directa con la herencia. Se refiere a la redefinición de un método de la superclase en las subclases.
• Si sobre-escribimos un método de la superclase en la subclase, se ejecutará uno u otro en función del tipo del objeto que invoque dicho método.
PROGRAMACIÓN – Daniel Santiago 6
![Page 7: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/7.jpg)
15.4. Sobre-escritura
• Ejemplo:class Figura{
public void calcularArea(){System.out.println(“Hay que especificar la forma
de la figura”);}
}class Rectangulo{
public void calcularArea(){this.area = this.base * this.altura;
}}
PROGRAMACIÓN – Daniel Santiago 7
![Page 8: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/8.jpg)
15.4. Sobre-escritura
• Ejemplo (continuación):class Programa{
public static void main(String args[]){//Declaramos dos variables de tipo Figura y RectanguloFigura fig = new Figura();Rectangulo rect = new Rectangulo();fig.calcularArea(); /*Se ejecuta el método de la clase
Figura*/rect.calcularArea(); /*Se ejecuta el método de la clase
Rectangulo*/}
}
PROGRAMACIÓN – Daniel Santiago 8
![Page 9: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/9.jpg)
15.5. Ligadura dinámica
• La ligadura dinámica permite invocar métodos de un objeto sin tener en cuenta su tipo hasta el momento en que se ejecuta el código.
• La ligadura dinámica, como la sobre-escritura, tiene relación directa con la herencia.
PROGRAMACIÓN – Daniel Santiago 9
![Page 10: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/10.jpg)
15.5. Ligadura dinámica
• Ejemplo:class Empleado{
private int identificador;private String nombre;public Empleado(int id, String nombre), … -public mostrarDatos() , … -
}class Jefe extends Empleado{
private String dept;public Jefe(int id, String nombre, String dept), … -}public mostrarDatos() ,… -
}
PROGRAMACIÓN – Daniel Santiago 10
![Page 11: T15 - Polimorfismo](https://reader036.vdocuments.co/reader036/viewer/2022080213/559c1aaa1a28ab27598b47e7/html5/thumbnails/11.jpg)
15.5. Ligadura dinámica
• Ejemplo (continuación):class Programa{
public static void main(String args[]){//Declaro un vector de empleadosEmpleado *+ vector = ,new Empleado(1, “Pepe”), new Jefe(2,
“Paco”, “Ventas”), new Empleado(3, “Maria”)-;for(int i=0;i<vector.length;i++){
empresa[i].mostrarDatos();/*Se llamará a un método o otro en función del tipo
de dato de empresa[i]*/}
}}
PROGRAMACIÓN – Daniel Santiago 11