PUERTA | PUERTA-CS-2003 | Pregunta 76

Considere las siguientes definiciones de clase en un lenguaje hipotético orientado a objetos que admita herencia y use enlaces dinámicos. No se debe suponer que el lenguaje sea Java o C++, aunque la sintaxis es similar.

Class P
{
    void f(int i)
    {
        print(i);
    }
}

Class Q subclass of P
{
    void f(int i)
    {
        print(2*i);
    }
}

Ahora considere el siguiente fragmento de programa:

P x = new Q();
Q y = new Q();
P z = new Q();
x.f(1); ((P)y).f(1); z.f(1); 

Aquí ((P)y) denota una conversión tipográfica de y a P. La salida producida al ejecutar el fragmento de programa anterior será
(A) 1 2 1
(B) 2 1 1
(C) 2 1 2
(D) 2 2 2

Respuesta: (D)
Explicación: dado que la pregunta en sí misma nos dice que el lenguaje usa vinculación dinámica, por lo tanto, todas las llamadas a funciones deben considerarse solo según el tipo básico de objeto almacenado.
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *