본문 바로가기
얄코의 제대로 파는 자바/섹션5 객체지향 프로그래밍

인터페이스

by 백엔드 개발자 2024. 3. 22.

 

 

 

본문 제목


추상 클래스와의 차이

 
A : 추상클래스
B : 인터페이스
 
  • A 포유류
    • 북극곰- B 사냥, B 수영
    • 날다람쥐 - B 비행
  • A 파충류
    • 거북 - B 수영
  • A 조류
    • 독수리 B 사냥, B 비행
    • 펭귄 B 사냥, B 수영
 
 
추상 클래스
인터페이스
기본 개념
물려 받는 것 (혈통/가문/계열)
장착하는 것 (학위/자격증)
다중 적용
불가 (모회사는 하나 뿐)
가능 (학위는 여럿 딸 수 있음)
상속관계에 의한 제한
있음
없음
생성자
가짐
가지지 않음
메소드
구상, 추상 모두 가능
추상 메소드 (abstract 안 붙여도 됨), default 구상 메소드,
클래스 메소드
필드
모두 가능
상수만 가능 (final 명시 불필요)
적용 연산자
extends implements

 

 

 

인터페이스 설명


 

인터페이스 예시

public interface Flyer {
    String aka = "날짐승"; // ⭐️ final - 초기화하지 않을 시 오류
    void fly ();
}
  • 인터페이스는 다중상속을 지원하려고 상수와 추상메서드만을 가진다.
  • 설계와 구현 분리
  • 인터페이스는 여러개를 적용할 수 있다.
  • 필드는 public static final만 사용 가능하다.
    • 명시할 필요 x
    • 초기화가 필수이다.(생성자가 없고, 상수필드만 사용가능하니까.)
  • 메서드는 public abstract
    • 명시x
    • 적용클래스에서 구현 필수.

 

 

구현체 샘플

public interface Hunter {
    String position = "포식자"; // ⭐️ final - 초기화하지 않을 시 오류
    void hunt ();
}
  • Hunter 인터페이스를 구현했기 때문에, 추상메서드인 hunt를 반드시 구현해야 한다.(메서드 구현 강제) 주석처리시 에러가 나는 모습을 볼 수 있다.

 

 

 

메인함수에서의 구현

  • 추상클래스가 그 자식클래스들에 대해서 다형성을 사용 가능한 것처럼(Mammm, 인터페이스도 인터페이스 자료형으로 구현체를 받아줄 수 있다.(다형성)

 

 

 

 

자바 8에 추가된 기능


 

  • 클래스 메서드
  • default 구상 메서드

 

  • default를 붙이면 구상메서드를 할 수 있다.
  • 이 예제는 클래스메서드와 구상메서드의 구현을 보여주고 있는데, 클래스(정적)메서드는 인스턴스 생성없이 그대로 인터페이스에서 바로 호출하고 있고, 구상메서드는 인터페이스 구현체에서 호출하고 있다.

 

구상메서드를 넣을 수 있도록 한 이유

 

새로운 자바 버전의 라이브러리 인터페이스에 새 기능이 추가되어야 한다면

만약 이를 적용해서 사용하는 클래스가 매우 많을 경우 ,일일이 다 새 기능을 추가해주어야 하는 상황에 놓이게 된다.

 

  • 구상(default)메서드를 사용해서 하위 클래스를 다 수정하지 않아도 되도록 한다.
  • 기존의 코드를 바꾸지 않아도 되는 하위 호환성을 위해 생긴 메서드.

 

 

 

 

 

 

 

 

출처 

  • 사이트, 검색명 (날짜)

'얄코의 제대로 파는 자바 > 섹션5 객체지향 프로그래밍' 카테고리의 다른 글

추상클래스와 인터페이스 차이점 관련글  (0) 2024.03.23
싱글턴  (0) 2024.03.22
추상클래스  (0) 2024.03.20
클래스의 final  (0) 2024.03.19
다형성  (0) 2024.03.17