Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

dudas polimorfismo

tratando de entender el concepto de polimorfismo, es palabras simples es que se puede usar un metodo para diferentes objetos que tengan relacion?

asi con codigo no entendi muy bien el concepto solo su implementacion

4 respuestas

Hola Kevin, saludos.

Te cuento que el instructor estaba utilizando 2 tipos de polimorfismo:

El primero que utilizo es el polimorfismo Overloading o sobreescritura de métodos, hace referencia al mismo mismo método con igual nombre, solo que contiene diferente parámetros, por ejemplo:

public class ControlBonificacion {

    private double sumaTotal;

    public double registrarSalario(Funcionario funcionario) {
        this.sumaTotal += funcionario.getBonificación();
        System.out.println("Calculo acutal: "+ this.sumaTotal + " : " + funcionario.getBonificación());
        return this.sumaTotal;
    }

    public double registrarSalario(Gerente gerente) {
        this.sumaTotal += gerente.getBonificación();
        System.out.println("Calculo acutal: "+ this.sumaTotal + " : " + gerente.getBonificación());
        return this.sumaTotal;
    }

    public double registrarSalario(Contador contador) {
        this.sumaTotal += contador.getBonificación();
        System.out.println("Calculo acutal: "+ this.sumaTotal + " : " + contador.getBonificación());
        return this.sumaTotal;
    }
}

El segundo es el polimorfismo Override o anulación de método, que implica redefinir el método de una clase principal en una subclase, aplicando una lógica personal para cada una, por ejemplo el método getBonificacion() que se utilizo en diferentes clases:

@Override
    public double getBonificación() {
        System.out.println("Ejecuanndo desde Gerente");
        return super.getBonificación() + super.getSalario();
    }

Espero te ayude, saludos!

Hola Luis, aprovecharé esta instancia para hacerte una pequeña, pero muy importante corrección. El polimorfismo no aplica en la sobre-escritura de métodos (overload), pero sí en la sustitución (override).

El polimorfismo es un paradigma de la programación que tiene lugar durante la herencia de objetos, en tiempo de ejecución. Es por esto que es el tipo de objeto el que determina cuáles métodos sustituídos son usados en tiempo de ejecución, mientras que el tipo de referencia determina métodos sobrecargados, pero en tiempo de compilación.

En palabras simples, el polimorfismo existe para describir la modificación del comportamiento (métodos) de objetos relacionados por herencia. Por ejemplo, digamos que tenemos una clase Animal de la que extienden las clases Perro y Gato. Ahora bien, Perro y Gato heredan de la clase Animal el método "Emitir sonido". Sin embargo, el método "Emitir sonido" de la clase Gato se resuelve como "Miau", mientras que el de la clase Perro se resuelve como "Guau". El método, si bien fue heredado de la clase Animal y es en estrictor rigor el mismo método, misma firma, para todas las clases hijas, se comporta diferente. Eso es polimorfismo.

La sobre-escritura de métodos no requiere de la existencia de herencia, y tampoco se habla del mismo método porque tienen una firma diferente a pesar de llamarse de la misma manera. Luego, se espera que se comporten diferente, porque son métodos distintos. No aplica ahí el polimorfismo.

Jorge, buenos días. ¿En el último párrafo no correspondería sobre-carga entonces?

Hola Daniel, buenas tardes;

Respondiendo tu pregunta, lo que se ve en el último párrafo es sobre-escritura de métodos, u "Override". Distinto a sobre-carga.

La sobre-carga es escribir el nombre de un método ya existente, modificando su firma, vale decir, tocando su parametría. De esta manera se sobre-carga el método el cual a fin de cuentas se transforma en un método diferente que nace de uno ya existente. Pero la sobre-escritura de métodos aprovecha la herencia para sobre-escribir un método de la clase padre, en una de las clases hijas, sin modificar la firma, vale decir, sin tocar los parámetros. Solo se modifica el cuerpo del método para que actúe o resuelva de manera distinta respecto del método padre.