JAVA

[JAVA] 디폴트 메서드와 static 메서드

개발 공주 2023. 6. 1. 16:19
728x90

디폴트 메서드

📌 디폴트 메서드는 추상 메서드의 기본적인 구현을 제공하는 메서드입니다.

  • 메서드 앞에 default 키워드를 붙이며 블럭{ }이 존재해야합니다.
  • default 메서드 역시 접근 제어자가 public 이며 생략이 가능합니다.
  • 추상 메서드가 아니기 때문에 인터페이스의 구현체들에서 필수로 재정의 할 필요는 없습니다.
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();
    }
}

interface A {
    void a();
    default void aa() {
        System.out.println("AA");
    }
}

 

static 메서드

📌 인터페이스에서 static 메서드 선언이 가능합니다.

  • static의 특성 그대로 인터페이스의 static 메서드 또한 객체 없이 호출이 가능합니다.
  • 선언하는 방법과 호출하는 방법은 클래스의 static 메서드와 동일합니다.
    • 접근 제어자를 생략하면 컴파일러가 public을 추가해 줍니다.
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();
        System.out.println();

        // static 메서드 aaa() 호출
        A.aaa();
    }
}

interface A {
    void a();
    default void aa() {
        System.out.println("AA");
    }
    static void aaa() {
        System.out.println("static method");
    }
}

 

 

'JAVA' 카테고리의 다른 글

[JAVA] 예외처리 (1)  (0) 2023.06.12
[JAVA] 인터페이스 다형성  (0) 2023.06.01
[JAVA] 인터페이스  (0) 2023.06.01
[JAVA] 추상 클래스  (0) 2023.06.01
[JAVA] instanceof  (0) 2023.06.01