пятница, 18 января 2008 г.

Static method overridding

What will the following code print?


class SuperClass {
public static void test() {
System.out.println(0);
}

public static void main(String[] args) {
SuperClass test = new SubClass();
test.test();
}
}

class SubClass extends SuperClass {
public static void test() {
System.out.println(1);
}
}

2 комментария:

Anton Nazarov комментирует...

Напечатает 0, но не понятно, почему :)

Ilya Markov комментирует...

Вполне понятно: вызывается статический метод того типа, который объявлен у переменной, а не того, который у нее реально. Если написать "SubClass tests = new SubClass();", то выведется 1.