본문 바로가기
Java

인터페이스

by k0o9 2022. 5. 27.

인터페이스

인터페이스 정의하는 방법

public interface Human {

    public static void run();

}
  • 키워드로 interface 사용.
  • 인터페이스의 모든 멤버변수는 public, static, final 이어야 하며, 생략이 가능하다.
  • 인터페이스의 모든 메서드는 public, abstract이어야하며 이를 생략할 수 있다. (static과 default 예외)

인터페이스 구현하는 방법

class KoreadHuman implements Human {
    publid void run() {
        System.out.println("Korea");
    }
}
  • 메스드중 일부만 구현할 경우 abstract를 붙여서 추상클래스로 선언해야 한다.
  • 오버라이딩시 부모 메서드보다 넓은 범위의 접근제어자를 사용하여야 한다.

인터페이스 레퍼런스를 통해 구현체를 사용하는 방법

Human koreaHuman = new KoreaHuman();

인터페이스도 레퍼런스를 통해 사용이 가능하다.

위의 코드의 경우 Human 인터페이스에서 선언한 메서드 또는 멤버변수만 사용이 가능하다 KoreanHuman 클래스에서 선언한 메서드나 멤버 변수는 사용할 수 없다.

이는 캐스팅을 통해 사용이 가능하다.

인터페이스 상속

  • 인터페이스는 다른 인터페이스로 상속받을 수 있다.
  • 다중 상속이 가능하다.
interface A {
}
interface B {
}
interface C extends A, B {}

인터페이스의 기본 메소드(Default Method), 자바 8

자바 8부터 인터페이스에 default 메서드가 추가되었다.

인터페이스는 최대한 수정이 안되게 설계를 하지만 추후에 요구사항이 변경되거나 추가되는 기능이 있기 때문이다.

디폴트 메서드란 추상 메서드의 기본적인 구현을 제공하는 메서드로, 디폴트 메서드가 새로 추가되어도 해당 인터페이스를 구현받은 클래스에서는 변경하지 않아도 된다.

interface A {
    void method();
    default void dMethod() {}
}

인터페이스의 static 메소드, 자바 8

디폴트 메서드와 마찬가지로 자바 8부터 추가할 수 있다.

static 이므로 구현한 클래스에서 재정의를 하지 않으며 반드시 인터페이스.Method형식으로 호출해야 한다.

인터페이스의 private 메소드, 자바 9

자바 9에서부터 인터페이스에도 캡슐화를 지원한다.

private와 private static 지원.

private 메서드 사용 규칙

  1. private 메서드는 추상 메서드가 될 수 없다.
  2. private 메서드는 인터페이스 내부에서만 사용할 수 있다.
  3. private static 메서드는 다른 static, non-static 인터페이스 메서드에서 사용될 수 있다.
  4. private non-static 메서드는 private static 메서드 내부에서 사용될 수 없다.

'Java' 카테고리의 다른 글

Thread  (0) 2022.05.27
예외처리  (0) 2022.05.27
접근 지시자  (0) 2022.05.27
ClassPath  (0) 2022.05.27
Package와 Import  (0) 2022.05.27