인터페이스를 사용 하는 이유가 무엇인가요?..
늦었지만 댓글 달아 봐요. interface 는 설계의 개념으로 생각하시면 좋을 것 같습니다. 1. 외부 시스템에게 api 공개 내 소스가 아닌 외부 시스템에게 api 공개가 필요한 경우 interface class를 사용할 수 있습니다. 나머지는 internal, private, protected 등으로 숨기고 외부 공개하는 api 만 interface class 로 만들어서 사용하도록 하는 방법입니다. 2. 특성 마다 작은 interface로 설계 interface 가 class 와 다른점은 다중 상속이 가능하다는 점입니다. 아래 예를 참고해 보시면 도움이 될 것 같습니다. [탈것]은 탄다, 내린다, 전진한다, 멈춘다 는 동작이 있습니다. [탈것] 은 [자동차], [자전거], [오토바이]가 포함됩니다. [자동차] 와 [오토바이] 는 시동을 건다 는 동작이 있지만 [자전거] 는 시동을 걸지 않아도 되지요. [자동차] 는 탄다 는 동작을 위해 문을 연다, 문을 닫는다 는 동작이 추가로 필요합니다. 하지만 [자전거] 와 [오토바이] 는 [안장에 앉는다] 는 동작만 필요합니다, 이걸 소스로 표현하면 아래와 같을 것 같습니다. interface 탈것 { void 탄다(); void 내린다(); void 전진한다(); void 멈춘다(); } interface 시동 { void 시동을 건다(); } interface 안장 { void 안장에 앉는다(); } interface 문 { void 문을연다(); void 문을닫는다(); } abstract class 자동차 implements 탈것, 시동, 문 { } abstract class 오토바이 implements 탈것, 시동, 안장 { } abstract class 자전거 implements 탈것, 안장 { } abstract class BMW자동차 extends 자동차 { } abstract class BMW오토바이 extends 오토바이 { } abstract class BMW자전거 extends 자전거 { }