Skip to content
Related Articles

Related Articles

GATE | GATE-CS-2003 | Question 76

Improve Article
Save Article
  • Difficulty Level : Expert
  • Last Updated : 20 Aug, 2021
Improve Article
Save Article

Consider the following class definitions in a hypothetical Object Oriented language that supports inheritance and uses dynamic binding. The language should not be assumed to be either Java or C++, though the syntax is similar.

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

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

Now consider the following program fragment:

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

Here ((P)y) denotes a typecast of y to P. The output produced by executing the above program fragment will be
(A) 1 2 1
(B) 2 1 1
(C) 2 1 2
(D) 2 2 2


Answer: (D)

Explanation: Since the question itself tells us that the language uses dynamic binding therefore all the function calls should be considered only on the basic of type of object stored.

Quiz of this Question

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!