이 질문이 오래 전에 요청되었지만 사실에 대한 포괄적 인 설명은 왜 인터페이스의 상수 전에 퍼블릭 추상 최종 메소드를 사용할 필요가없고 퍼블릭 정적 최종을 사용할 필요가 없는지 명확하게 느낄 것입니다.
우선 모든 인터페이스는 모든 클래스가 고유하게 구현되는 관련되지 않은 클래스 세트에 대한 공통 메소드를 지정하는 데 사용됩니다. 따라서 액세스 클래스를 대체 할 다른 클래스에서 액세스 할 수 없으므로 액세스 수정자를 개인으로 지정할 수 없습니다.
둘째, 인터페이스 유형의 객체를 시작할 수 있지만 인터페이스를 구현하고 상속하지 않는 클래스에 의해 인터페이스가 구현됩니다. 또한 동일한 패키지에없는 다른 관련되지 않은 클래스에 의해 인터페이스가 구현 (구현) 될 수 있으므로 보호 된 액세스 수정 자도 유효하지 않습니다. 따라서 액세스 수정 자에 대해서는 공개적으로 선택해야합니다.
셋째, 인터페이스에는 인스턴스 변수 및 메소드를 포함한 데이터 구현이 없습니다. 인터페이스에 구현 된 메소드 또는 인스턴스 변수를 삽입해야하는 논리적 이유가있는 경우 인터페이스가 아니라 상속 계층 구조의 수퍼 클래스 여야합니다. 이 사실을 고려하면 인터페이스에서 메소드를 구현할 수 없으므로 인터페이스의 모든 메소드가 추상적이어야합니다.
넷째, 인터페이스는 데이터 멤버로만 상수를 포함 할 수 있습니다. 즉, 멤버는 최종이어야하며 물론 하나의 인스턴스 만 유지하려면 최종 상수가 정적으로 선언됩니다. 따라서 static final은 인터페이스 상수의 필수 요소입니다.
결론적으로 인터페이스의 상수 이전에 public abstract before 메소드와 public static final을 사용하더라도 유효하지만 다른 옵션이 없으므로 중복으로 간주되어 사용되지 않습니다.