인터페이스 (Interface)

조상원·2025년 8월 2일

JAVA

목록 보기
18/34

자바에서 클래스들이 구현해야 하는 동작을 지정하는 역할

인터페이스 선언

[접근 제한자] interface 인터페이스명 { ... }
  • 인터페이스 선언은 class 키워드 대신에 interface 키워드를 사용
  • 인터페이스는 선언된 필드는 모두 public static final 특성 가짐
  • 인터페이스에 선언된 메소드는 모두 public abstract 특성가짐
  • 자바8부터 디폴트 메소드와 정적 메소드 선언 가능
public interface Runable {
  void run(); // public abstract 생략 가능
}

인터페이스 구현

  • 클래스 선언부에 implements 키워드를 추가하고 인터페이스명을 명시
  • 인터페이스를 구현하는 클래스는 인터페이스에 정의된 추상 메소드를 반드시 오버라이딩
// 인터페이스 구현 방법
public class Cat implements Runable {
  ...

  @Override
  public void run() {
    ...
  }
}

다중 구현 가능

// 인터페이스의 다중 구현 시 콤마(,)로 구분한다.
public class Cat implements Runable, Swimable {
    ...
  @Override
  public void run() {
    ...
  }

  @Override
  public void swim() {
    ...
  }
}

인터페이스를 구현하는 클래스로 객체를 생성 후 구현된 메소드를 호출할 수 있음

Cat cat = new Cat();

cat.run();
cat.swim();

인터페이스 상속

  • 인터페이스도 다른 인터페이스를 상속할 수 있다.
  • 인터페이스는 클래스와 달리 다중 상속을 허용한다.
[접근 제한자] interface 하위인터페이스 extends 상위인터페이스1, 상위인터페이스2 { ... }
public interface Basic extends Runable, Swimable {
  void eat();
}
  • 하위 인터페이스를 구현하는 클래스는 하위 인터페이스의 추상 메소드 뿐만 아니라 상위 인터페이스들의 모든 추상 메소드들을 오버라이딩
public class Cat implements Basic {
    ...

  @Override
  public void eat() {
    ...
  }

  @Override
  public void run() {
    ...
  }

  @Override
  public void swim() {
    ...
  }
}

0개의 댓글