추상 메서드의 기본적인 구현을 제공하는 메서드이다.
추상 메서드가 아니기 때문에 인터페이스의 구현체들에서 필수로 재정의할 필요는 없다.
👉 구현한 부분이 있기 때문에 추상 메서드가 아니다 !
public class Main implements A {
@Override
public void a() {
System.out.println("A");
}
public static void main(String[] args) {
Main main = new Main();
main.a();
main.aa(); // default method
}
}
interface A {
void a();
default void aa() { // default method
System.out.println("AA");
}
}
재정의 없이 바로 사용할 수 있다.
인터페이스에서 static
메서드를 선언할 수 있다.
static
의 특성 그래돌 인터페이스의 static
메서드 또한 객체 없이 바로 호출 가능하다.
public class Main implements A {
@Override
public void a() {
System.out.println("A");
}
public static void main(String[] args) {
Main main = new Main();
main.a();
A.aa(); // static method -> 바로 접근
}
}
interface A {
void a();
static void aa() {
System.out.println("static method");
}
}