Рубрики

ВОРОТА | GATE-CS-2003 | Вопрос 76

Рассмотрим следующие определения классов в гипотетическом объектно-ориентированном языке, который поддерживает наследование и использует динамическое связывание. Язык не должен быть языком Java или C ++, хотя синтаксис схож.

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

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

Теперь рассмотрим следующий фрагмент программы:

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

Здесь ((P) y) обозначает тип преобразования y к P. Выходные данные, полученные при выполнении вышеуказанного фрагмента программы, будут
(А) 1 2 1
(Б) 2 1 1
(С) 2 1 2
(D) 2 2 2

Ответ: (D)
Объяснение:
Тест на этот вопрос

Рекомендуемые посты:

ВОРОТА | GATE-CS-2003 | Вопрос 76

0.00 (0%) 0 votes