인터페이스에 메서드 본문을 포함 할 수 없다는 것을 알고 있으며 다른 클래스에서 구현할 수 있으며 사용자 지정 논리를 작성할 수 있습니다. 그러나 클래스에서 상속을 사용하여 구현할 수도 있습니다. 그렇다면 왜 인터페이스가 등장할까요? 어떤 메소드 정의를 오버라이드하고 싶다면 클래스의 상속에서 할 수 있고 커스텀 코드를 작성할 수 있습니다. 인터페이스의 정확한 목적은 무엇입니까?클래스를 사용하여 동일한 작업을 수행 할 수있는 이유는 무엇입니까?
1
A
답변
6
한 가지 이유는 클래스가 여러 인터페이스를 구현할 수 있지만 하나의 클래스에서만 파생된다는 것입니다.
또 다른 것은 계층 적으로 전혀 관련이없는 클래스가 동일한 인터페이스를 구현할 수 있다는 것입니다. 인터페이스가없는 정적으로 유형화 된 언어에서는 인터페이스를 구현할 수없고 관련없는 클래스를 유도해야하기 때문에 생성 된 매우 깊은 상속 계층 구조를 자주 볼 수 있습니다. 이것은 종종 상속의 "원칙"을 위반하는 경향이 있습니다. 이러한 구현은 또한 상속 트리 아래로 더 필요하기 때문에 사용되지 않는 코드를 드래그하는 경향이 있습니다.
TL; DR은 - 그것은 할 수 있지만, 결과는 종종
2
- 인터페이스 추하고 이상 유지할 수 있습니다 - 개체가이 작업을 수행 할 수 있습니다.
- 클래스 - 개체가이 작업을 수행하는 방법입니다.
또한 인터페이스는 diamond problem
을 피하기 위해 사용될 수있다관련 문제
- 1. 가치는 내가이 작업을 수행 할 수있는 방법,
- 2. 여러 작업을 수행 할 수있는 북마크
- 3. VB.NET - 작업을 수행 할 수있는 시간 제한
- 4. TCL, 어떻게이 작업을 수행 할 수있는 문자열
- 5. 웹 사이트에서 수행하는 작업을 파악하여 프로그램에서 동일한 작업을 수행 할 수있는 유용한 자습서가 있습니까?
- 6. 이 작업을 수행 할 수있는 웹 비디오 형식은 무엇입니까?
- 7. 텍스트 편집기에서이 작업을 수행 할 수있는 방법은 무엇입니까?
- 8. json 데이터로이 반복 작업을 수행 할 수없는 이유는 무엇입니까?
- 9. 원격 사용자가 "데이터베이스"로 수행 할 작업과 다른 작업을 수행 할 수있는 권한은 무엇입니까?
- 10. QTP에서 동일한 작업을 수행 할 때 vbscript를 사용하여 작업을 직접 코딩 할 수 있습니까?
- 11. Finch를 사용하여 오디오를 재생할 때 OpenAL에서 수행 할 수있는 모든 작업을 실제로 수행 할 수 있습니까?
- 12. 여러 사용자가 동일한 작업을 수행 PHP
- 13. 새 특정 클래스를 추가 할 때 몇 가지 작업을 수행
- 14. 이 작업을 수행 할 디자인 패턴은 무엇입니까?
- 15. (분명히) 동일한 작업을 수행 할 테이블 스타일 설정을 설정하기위한 태그가 중복되는 이유는 무엇입니까?
- 16. Android :이 작업을 수행 할 수있는 응용 프로그램이 없습니다 (ACTION_SEND)
- 17. TFS 2008의 LOCAL SERVICE에 작업을 할당 할 수있는 이유는 무엇입니까?
- 18. 당신은이 작업을 수행 할 수
- 19. 단일 파일에서 동일한 작업을 여러 번 수행
- 20. JQuery로 수행 할 수없는 JavaScript로 수행 할 수있는 작업은 무엇입니까?
- 21. IronPython에서 수행 할 수없는 Cpython에서 수행 할 수있는 작업은 무엇입니까?
- 22. 이 작업을 수행 할 수있는 무료 PHP 지원 서버가 있습니까?
- 23. [System.SerializableAttribute()] 특성없이 클래스를 계속 serialize 할 수있는 이유는 무엇입니까?
- 24. BeginInvoke는 BackgroundWorker와 동일한 작업을 수행 할 수 있습니까?
- 25. 비교 다소간은 입력과 동일한 작업을 수행
- 26. 동일한 개체에서 동일한 작업을 수행 한 친구 목록을 얻는 방법
- 27. 나는이 작업을 수행 할 시간
- 28. 동적으로 ... 나는이 작업을 수행 할 수있는 방법 AS3
- 29. Silverlight에서 FileSystemWatcher가 수행하는 작업을 수행 할 수있는 대안이 있습니까?
- 30. Rails ActiveRecord - ID가없는 테이블에서 작업을 수행 할 수있는 방법이 있습니까?