1) 두 대상(객체)간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다.
사람 - 윈도우 - 컴퓨터 가 있을때, 인터페이스는 윈도우(껍데기)의 역할을 해줌.
컴퓨터의 내부 알맹이가 바껴도, 윈도우의 모습은 그대로이기 때문에 변경에 유리함.
2) 선언(설계)(껍데기)와 구현(알맹이)을 분리시킬 수 있게 한다.
class B { // 껍데기 + 알맹이
public void method() { // 선언부만 떼어내서 인터페이스로 선언
System.out.println("methodInB");
}
}
⬇︎ 선언부와 구현부를 인터페이스로 분리 ⬇︎
interface I { // 껍데기로 분리
public void method(); // 선언부만 가져와서 추상메소드로 만듦
}
class B implements I { // 알맹이로 분리
public void method() {
System.out.println("methodInB");
}
}
3) 개발 시간을 단축할 수 있다.
: 알맹이를 다 작성하지 않아도, 인터페이스를 통해 코드를 작성할 수 있음.
( A→ I 사용, B는 I 이용해서 구현) 동시에 진행 가능
4) 변경에 유리한 유연한 설계가 가능하다.
5) 표준화가 가능하다.
java application이 만든 표준DB JDBC(인터페이스 집합)에 맞춰서 oracle,mysql 등 DB회사가 개발. 표준 인터페이스에 맞춰서 개발했기 때문에, 다른 DB를 사용해도 표준에 맞췄기 때문에 상관 없음.
6) 서로 관계없는 클래스들을 관계 맺어줄 수 있다.
void repair(Repairable r) { // Repairable을 구현한 클래스 객체만 가능
if (r instanceof Unit) {
Unit u = (Unit)r;
~ //생략
출처
- 자바의 정석 기초 - youtube, ch 7-39