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