es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué llama la implementación del método del padre un objeto que ha sido promovido en Java?

Me encontré con un problema mientras jugaba con la herencia de clases en Java, donde la subclase C tiene un método fun() como su padre A, pero con una firma diferente. Sin embargo, no entiendo por qué se llama al método de la clase padre cuando se invoca fun() en el objeto x. Entiendo que debido a que la firma es diferente, esto no es exactamente una anulación de método, pero aun así no entiendo por qué se invoca el método fun() de A aquí.

Clase A

class A{
    public void fun(double d){
        System.out.println("A");
    }
}

Clase C

public class C extends A{
    public static void main(String[] args){
        A x = new C();
        x.fun(6); //imprime "A"
    }
    public void fun(int i){
        System.out.println("C");
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual se llama al método fun() de la clase A cuando se invoca fun() en el objeto x es debido a la despachación dinámica de métodos.

    La despachación dinámica de métodos es un mecanismo por el cual una llamada a un método sobreescrito se resuelve en tiempo de ejecución en lugar de en tiempo de compilación. En este caso, como la firma del método fun() en la clase C es diferente a la de la clase A, el compilador no puede determinar qué método llamar en tiempo de compilación. Por lo tanto, la llamada al método se resuelve en tiempo de ejecución y como el objeto x es de tipo A, se llama al método fun() de la clase A.

Comments are closed.