2012-09-07 3 views
1

인터페이스에 메서드 본문을 포함 할 수 없다는 것을 알고 있으며 다른 클래스에서 구현할 수 있으며 사용자 지정 논리를 작성할 수 있습니다. 그러나 클래스에서 상속을 사용하여 구현할 수도 있습니다. 그렇다면 왜 인터페이스가 등장할까요? 어떤 메소드 정의를 오버라이드하고 싶다면 클래스의 상속에서 할 수 있고 커스텀 코드를 작성할 수 있습니다. 인터페이스의 정확한 목적은 무엇입니까?클래스를 사용하여 동일한 작업을 수행 할 수있는 이유는 무엇입니까?

답변

6

한 가지 이유는 클래스가 여러 인터페이스를 구현할 수 있지만 하나의 클래스에서만 파생된다는 것입니다.

또 다른 것은 계층 적으로 전혀 관련이없는 클래스가 동일한 인터페이스를 구현할 수 있다는 것입니다. 인터페이스가없는 정적으로 유형화 된 언어에서는 인터페이스를 구현할 수없고 관련없는 클래스를 유도해야하기 때문에 생성 된 매우 깊은 상속 계층 구조를 자주 볼 수 있습니다. 이것은 종종 상속의 "원칙"을 위반하는 경향이 있습니다. 이러한 구현은 또한 상속 트리 아래로 더 필요하기 때문에 사용되지 않는 코드를 드래그하는 경향이 있습니다.

TL; DR은 - 그것은 할 수 있지만, 결과는 종종

2
  • 인터페이스 추하고 이상 유지할 수 있습니다 - 개체가이 작업을 수행 할 수 있습니다.
  • 클래스 - 개체가이 작업을 수행하는 방법입니다.

또한 인터페이스는 diamond problem

을 피하기 위해 사용될 수있다
관련 문제