인터페이스는 약속된 행위를 하도록 정의 한 후 실제 내부를 어떻게 구현할지는 각 Implements 에 따라 따로따로 만들 수 있게 하는 것이 인터페이스이다. 실제 다형성을 구현할 때 인터페이스를 많이 사용하게 된다. Implements 가 많아서 그것을 인터페이스 하나로 정의하여 사용하고 싶거나, 해당 소스코드가 라이브러리가 되어 외부사람한테 제공할 때 유용하게 쓰일 수 있다. (* 다형성 : 실제 오브젝트의 형태는 하나인데, 거기서 함수를 호출했을때 각 구현에 따라 그 행태가 달라지는 것 ) 단점은 코드가 읽기 어려워지고, 디버깅이 어렵다. 비지니스 요구가 계속 바뀌는 업종일 경우 인터페이스를 무작위로 추가하게되면 Implements 와 인터페이스 두 개다 계속해서 바꿔야 하는 상황이 와서 불편하다...