среда, 1 августа 2012 г.

oop: overriding

----------------------------------------------------------------
-- Код:
class A {}
class B extends A {}
-- Вопросы/задания:
1) строка кода
A x = new B();
- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться и выполняться

2) строка кода
B x = new A();
- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться и выполняться

3) строка кода
A x = new A();
- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться и выполняться

4) строка кода
B x = new B();
- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться и выполняться

----------------------------------------------------------------
-- Код:
class A {
    void f() {System.out.println("A.f()")}
}
class B extends A {
    void f() {System.out.println("B.f()")}
}
-- Вопросы/задания:
1) строки кода
A x = new A();
x.f();
- ошибка времени компиляции
- ошибка времени исполнения

- все будет компилироваться, выполняться и выведет "A.f() B.f()"
- все будет компилироваться, выполняться и выведет "A.f() A.f()"
- все будет компилироваться, выполняться и выведет "B.f() A.f()"
- все будет компилироваться, выполняться и выведет "B.f() B.f()"
- все будет компилироваться, выполняться и выведет "A.f()"
- все будет компилироваться, выполняться и выведет "B.f()"

- ничего не выведет

2) строки кода
B x = new A();
x.f();
- ошибка времени компиляции
- ошибка времени исполнения

- все будет компилироваться, выполняться и выведет "A.f() B.f()"
- все будет компилироваться, выполняться и выведет "A.f() A.f()"
- все будет компилироваться, выполняться и выведет "B.f() A.f()"
- все будет компилироваться, выполняться и выведет "B.f() B.f()"
- все будет компилироваться, выполняться и выведет "A.f()"
- все будет компилироваться, выполняться и выведет "B.f()"

- ничего не выведет

3) строки кода
A x = new B();
x.f();
- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться, выполняться и выведет "A.f() B.f()"
- все будет компилироваться, выполняться и выведет "A.f() A.f()"
- все будет компилироваться, выполняться и выведет "B.f() A.f()"
- все будет компилироваться, выполняться и выведет "B.f() B.f()"
- все будет компилироваться, выполняться и выведет "A.f()"
- все будет компилироваться, выполняться и выведет "B.f()"
- ничего не выведет


4) строки кода
B x = new B();
x.f();
- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться, выполняться и выведет "A.f() B.f()"
- все будет компилироватьсявыполняться и выведет "A.f() A.f()"
- все будет компилироваться, выполняться и выведет "B.f() A.f()"
- все будет компилироваться, выполняться и выведет "B.f() B.f()"
- все будет компилироваться, выполняться и выведет "A.f()"
- все будет компилироваться, выполняться и выведет "B.f()"
- ничего не выведет

----------------------------------------------------------------
-- Код:
class A {
    void f() {System.out.println("A.f()")}
}
class B extends A {
    void f() {System.out.println("B.f()")}
}

class C extends B {
    void f() {System.out.println("C.f()")}
}

-- Вопросы/задания:
1) строки кода
B x = new C();
x.f();
- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться, выполняться и что выведет?

----------------------------------------------------------------
-- Код:
class A {
    void f() {System.out.println("A.f()")}
}
class B extends A {
    void f() {System.out.println("B.f()")}
    void g(){System.out.println("B.g()")}
}

class C extends B {

    void f() {System.out.println("C.f()")}
    void g(){System.out.println("C.g()")}

    void h(){System.out.println("C.h()")}


}

-- Вопросы/задания:
1) строки кода
B x = new C();
x.g();
- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться, выполняться и что выведет?
2) строки кода
A x = new C();
x.g();

- ошибка времени компиляции
- ошибка времени исполнения
- все будет компилироваться, выполняться и что выведет?