일종의 추상클래스이다. 하지만 추상클래스보다 추상화 정도가 높아서 오직 추상메서드와 상수만을 멤버로 가질 수 있다.
인터페이스 멤버들의 제약사항
public static final
이어야 하며, 이는 생략 가능하다.public abstract
이어야 하며, 이는 생략 가능하다.인스턴스와 관계가 없는 독립적인 메서드
static메서드 역시 접근 제어자가 항상 public
이며, 이는 생략 가능하다.
interface Myinterface {
static void staticMethod() {
System.out.println("staticMethod() of interface"); // 구현부 존재
}
}
사용
인터페이스명.static메서드명
Myinterface.staticMethod();
static멤버의 상속
static멤버들은 자신들이 정의된 클래스에 묶여있다고 생각해야 한다.
호출할 때 꼭클래스이름.static멤버이름
으로 호출
default메서드 역시 접근 제어자가 항상 public
이며, 이는 생략 가능하다.
interface Myinterface {
default void defaultMethod() {
System.out.println("defaultMethod() of interface"); // 구현부 존재
}
}
인터페이스의 default메서드는 구현 클래스에서 직접 구현하지 않아도 된다.
인터페이스의 구현 클래스에 default메서드가 자동으로 구현된다.(마치 상속처럼)
참고
Java의 정석_남궁성