Что будет выведено на экран?

class A {
    int i = 0;
    public int increment() {
        return ++i;
    }
}
 
public class B extends A {
    int i = 10;
    public int increment() {
        return ++i;
    }
 
    public static void main(String[] args) {
        A obj = (A) new B(); 
        System.out.println(obj.increment());
    }
}
Explanation
Метод A.increment() перекрывается в классе B.
Поэтому, вне зависимости от типа переменной obj, будет вызываться метод, соответствующий реальному типу объекта - т.е. B.increment().
Этот метод будет использовать переменную i, объявленную в том же классе B и имеющую начальное значение 10.
Результирующее значение - 11.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты