Написано, что " в классе-наследнике обычно можно переопределять существующие методы. Это значит, что можно создать метод с таким же названием, только заменить его "внутренности". Так вот, статический метод нельзя переопределить. По аналогии с переменными, можно сказать, что этот метод "один для класса и его наследников" - так же, как статическая переменная "одна для класса и всех его объектов"."
Тогда почему при попытке перезаписать статический метод все компилируется, да еще и ответ будет верным?
public class one {
static void hello() {
System.out.println("Hi, i am ONE class!");
}
}
public class Two extends one{
static void hello() {
System.out.println("I am TWO class");
}
}
public class test {
public static void main(String[] args) {
Two.hello();
}
}
Вывод в консоль: I am TWO class