인터페이스

**객체의 사용 방법을 정의**한 타입이다.

사용하는 이유

객체의 **교환성**을 높이기 때문에 **다형성 구현의 핵심**이다.

결합도 또한 낮출 수 있다.

Untitled

사진을 보면 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다

개발 코드 → 인터페이스의 메소드 호출 → 인터페이스는 객체의 메소드 호출

그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요 없이 인터페이스의 메소드만 알면 된다

인터페이스를 중간에 두는 이유는 개발 코드를 수정하지 않고 사용하는 **객체를 변경**하기 위해서이다.

인터페이스는 하나의 객체뿐만 아니라 여러 객체와 사용이 가능하므로 사용하는 객체에 따라 결과가 다름

코드 변경 없이 실행 내용과 리턴값을 다양화 가능