Почему конечные константы в Java могут быть переопределены?

Рассмотрим следующий интерфейс в Java:

public interface I {
    public final String KEY = "a";
}

И следующий класс:

public class A implements I {
    public String KEY = "b";

    public String getKey() {
        return KEY;
    }
}

Почему класс А может прийти и переопределить интерфейс I?Конечная константа?

Попробуйте сами:

A a = new A();
String s = a.getKey(); // returns "b"!!!

Ответы на вопрос(6)

Ваш ответ на вопрос