Написано, что " в классе-наследнике обычно можно переопределять существующие методы. Это значит, что можно создать метод с таким же названием, только заменить его "внутренности". Так вот, статический метод нельзя переопределить. По аналогии с переменными, можно сказать, что этот метод "один для класса и его наследников" - так же, как статическая переменная "одна для класса и всех его объектов"." Тогда почему при попытке перезаписать статический метод все компилируется, да еще и ответ будет верным?
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