**객체의 사용 방법을 정의
**한 타입이다.
객체의 **교환성
**을 높이기 때문에 **다형성 구현의 핵심
**이다.
결합도 또한 낮출 수 있다.
사진을 보면 인터페이스는 개발 코드와 객체가 서로 통신하는 접점
역할을 한다
개발 코드 → 인터페이스의 메소드 호출 → 인터페이스는 객체의 메소드 호출
그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요 없이 인터페이스의 메소드만 알면 된다
인터페이스를 중간에 두는 이유는 개발 코드를 수정하지 않고
사용하는 **객체를 변경
**하기 위해서이다.
인터페이스는 하나의 객체뿐만 아니라 여러 객체와 사용이 가능하므로 사용하는 객체에 따라 결과가 다름
→ 코드 변경 없이 실행 내용과 리턴값을 다양화
가능