Java

인터페이스(Interface)

아나니리 2020. 1. 14. 22:28

인터페이스?

하나의 시스템을 구성하는 2개의 구성 요소(하드웨어, 소프트웨어) 또는 2개의 시스템이 상호 작용할 수 있도록 접속되는 경계(boundary), 이 경계에서 상호 접속하기 위한 하드웨어, 소프트웨어, 조건, 규약 등을 포괄적으로 가리키는 말

 

  • interface는 자바에서 한 단계 더 높은 추상화를 하기 위해 사용된다.
  • interface는 구현 로직은 존재하지 않으며 메서드에 대한 입력(input), 출력(output)만 정의하고 있다.
  • interface를 활용해 추상화를 하는 이유는 소프트웨어에 변경이 발생할 경우 소스 코드에 변경을 최소화함으로써 유지보수 비용을 줄이고, 변화에 빠르게 대응하기 위함이다.
  • 추상화를 함으로써 미래의 변화에 빠르게 대응할 수 있지만 추상화를 하려면 추상화에 따른 개발 비용이 발생한다.
public interface PlayingCard {
    int SPADE = 1; // public static final 생략
    int DIAMOND = 2;
    int HEART = 3;
    int CLOVER = 4;
    
    // public abstract 생략
    int getCardNumder();
    
    // default 메소드
    default int getCardKind(){
    	return SPADE;
    }
	
    // static 메소드
    static String getName(){
    	return "PlayingCard";
    }
}

모든 멤버변수는 상수이다. public static final 생략 가능

모든 메서드는 추상 메서드이다. public abstract 생략 가능

 

java 8 버전 이후 default 메서드와, static 메서드 추가 가능

 

default 메소드

  • interface에서 메서드 구현이 가능하다.
  • interface를 구현하는 클래스에서 재정의(override) 가능하다.

static메서드

  • interface에서 메서드 구현이 가능하다.
  • interface를 구현하는 클래스에서 재정의(override) 불가능하다.

 

출처

https://dahyeee.tistory.com/entry/JAVA-interface-default-static%EB%A9%94%EC%86%8C%EB%93%9C

https://wikidocs.net/217