HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
✍🏻
Learnary (learn - diary)
/
🪅
java interface 익숙해지기
🪅

java interface 익숙해지기

progress
Done
Tags
Java
GuideLine총 요약Interface란 무엇인가?Interface의 역할Interface 구성요소구현 방식 3가지인터페이스 사용 방식인터페이스 타입 변환과 다형성 (detail)왜 사용할까

GuideLine

📚
guide
 

총 요약

📢
인터페이스는 유지보수에 있어 아주 좋은 해결 방안 중 하나가 될 수 있다. 객체를 뺏다 꼇다 하도록 유연하게 하며 의존성을 낮추는 효과 또한 얻을 수 있다. SOLID 원칙 중 인터페이스 분리 원칙에 의거하여 해당 인터페이스를 최대한 분리하여 불 필요한 메소드를 호출하도록 하지 않아 side effect를 줄일 수 있으며, 해당 구현체에 의존하는 것이 아니라 추상화에 의존하여 객체의 강한 결합도를 낮추어 유연하게 갈아낄수 있도록 하는 효과가 있다.

Interface란 무엇인가?

📢
사전적 의미 : 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 컴퓨팅적 의미에서는 컴퓨터 시스템 끼리 정보를 교환 하는 공유 경계이다. java에서의 의미 : 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다. 이들은 프로토콜과 유사하다.
 

Interface의 역할

  • 설계도이다.
  • 인터페이스 변수에 서로 다른 구현체를 넣으면서 객체를 조립식으로 만들어 의존성을 낮춰준다.
 

Interface 구성요소

  • 상수 필드
    • public interface Wheel{ public static final DEFAULT = 33; // 상수 필드 }
      인터페이스는 new 를 통해 객체화 할 수 없다. 그래서 인스턴스 필드, 정적 필드는 선언이 불가능하다.
      상수필드는 run-time이 아닌 Compile-time에 선언되어 지므로 선언이 가능하다.
      public static final 이 붙지 않아도 자동으로 상수화 된다.
 
  • 추상 메서드
    • public interface Wheel{ public static final DEFAULT = 33; // 상수 필드 public abstract void roll over{ // 츠상 메소드 ... } }
      실제소스는 구현객체 안에 있다.
      public abstract 는 생략 가능하다.
       
  • 디폴트 메소드
    • public interface Wheel{ public static final DEFAULT = 33; // 상수 필드 public abstract void roll over{ // 츠상 메소드 ... } public default void stop{ // default 메소드 ... } }
      java 8에서부터 추가된 기술이다.
      default 키워드가 붙으며, Override 또한 가능하다.
 
  • 정적 메소드
    • java 8에서부터 추가된 기술이다.
      클래스의 정적 메소드와 똑같은 방식으로 사용한다.
       
       

구현 방식 3가지

  • 단일 인터페이스 구현
  • 다중 인터페이스 구현(다중 상속 처럼)
  • 익명 구현 객체
 

인터페이스 사용 방식

  • 클래스 필드
  • 생성자 파라미터
  • 생성자의 로컬 변수
  • 메소드 파라미터
  • ‘메서드 로컬 변수
publicclassTestClass { // 1.클래스의 필드 User user =new Recipient(); // 2.생성자의 파라미터 TestClass(User user) { this.user = user; // 3.생성자의 로컬변수 User recipient =new Recipient(); } // 4.메서드의 파라미터 voidmethodA(User user) { ... } voidmethodB() { // 5.메서드의 로컬변수 User user =new Recipient(); } }
 

인터페이스 타입 변환과 다형성 (detail)

다형성이란? → 인터페이스 대표적 특징
실제 객체에 따라 다양한 형태로 동작하는 방식을 의미한다.
ex) 폰에 있는 숫자 키가 게임에서는 방향키가 될 수 있는 것처럼
 
  • 자동 타입 변환
    • 📢
      런타임에 구현객체가 인터페이스 참조 변수로 자동 변환 하는 것 =: promotion
  • 매개 변수의 다형성
    • 인터페이스 변수를 두고, 구현 객체를 대입
  • 강제 타입 변환
    • 📢
      인터페이스에서 정의된 추상 메서드의 실체 메서드 이외에는 호출 할 수 없다.
  • 객체 타입 확인
    • 📢
      ${상위 타입} instanceof ${하위 타입}
      ⚠️ 어던 구현 객체가 대입되는지 모르는 상황에서 강제 타입 변환을 하게 되면 classCastException이 발생하므로 어떤 구현체가 담겨있는지 꼭 확인이 필요하다‼️
       

왜 사용할까

📢
서비스 애플리케이션의 라이프사이클을 크게 3단계로 나뉘어진다. [설계 → 개발 → 유지보수] 그 중 가장 큰 부분을 차지하는 부분이 유지보수 이다. 특히나 유지보수에서 Interface가 객체 지향적 개발을 하는데 큰 기여를 한다.