Почему интерфейсные переменные являются статическими и окончательными по умолчанию в Java?
Из FAQ по дизайну интерфейса Java от Филипа Шоу:
Переменные интерфейса статичны, потому что интерфейсы Java не могут быть созданы сами по себе; значение переменной должно быть присвоено в статическом контексте, в котором не существует экземпляра. Последний модификатор гарантирует, что значение, присвоенное переменной интерфейса, является истинной константой, которую нельзя переназначить программным кодом.
статический - потому что интерфейс не может иметь никаких экземпляров. и окончательный - потому что нам не нужно его менять.
Потому что все остальное является частью реализации, а интерфейсы не могут содержать никакой реализации.