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