추상 클래스에서 모든 메소드를 추상화하여 인터페이스처럼 작동 할 수 있으므로 인터페이스를 사용하는 이유는 무엇입니까 ?? 내가 올 수있는 이유 중 하나는 다중 클래스를 확장하지 않는 다중 인터페이스를 구현할 수 있다는 것이 었습니다. 어떤 디자인이나 성능과 관련된 것이 있습니까 ??모든 메소드를 추상화 할 수있는 동안 인터페이스를 사용하는 이유는 무엇입니까?
-1
A
답변
2
이미 답변을 얻었습니다. 인터페이스를 사용하면 클래스 사용이 작동하지 않는 여러 유형의 비헤이비어를 적용 할 수 있습니다. 예를 들어 클래스를 IComparable 및 INumerable로 적용 할 수 있지만 클래스를 사용하여 수행하려는 경우 불가능합니다.
0
디자인 현명한는 (List
인터페이스를 참조) 코드 동작/계약/기능 정의에 대한 Interface
를 사용하고 일부 재사용 (상속을 통해) 메소드 구현을 atlease 한 Abstract
클래스를 사용하는 지침을 바람직하다.
비록 모두 abstract
방법을 가질 수 있지만, 그러한 경우에는 Interface
이 바람직하다.
1
당신은 인터페이스가 허용하는 한 가지 사실을 이미 확인했습니다. 한 클래스는 여러 추상 클래스를 확장 할 수 없습니다.
어떤 디자인이나 성능 관련 일이 있습니까 ??
성능 차이는 없습니다.
추상 클래스 (사실상 모든 클래스)의 단일 상속 제한은 이것을 "디자인적인 것"으로 만든다고 주장 할 수 있습니다. 틀림없이 OO 설계에서 다형성의 사용을 심각하게 제한 할 것입니다.
는 (당신은 또한 당신이 인터페이스를 가지고 있지 않습니다 "인터페이스에 프로그래밍"의 격언을 따를 수 없다고 주장 할 수 있습니다. 그러나, 약한 인수 ... 전문 용어 애매한입니다.)
관련 문제
- 1. 자바에서 인터페이스를 사용하는 이유는 무엇입니까?
- 2. 회원없는 인터페이스를 사용하는 이유는 무엇입니까?
- 3. 인터페이스를 구현하는 enum 목록이있는 메소드를 호출 할 수없는 이유는 무엇입니까?
- 4. 계약서에서 추상화 메소드를 정의해야합니까?
- 5. 사전 선언에서 인터페이스를 사용하는 이유는 무엇입니까?
- 6. Proguard에서 최적화 할 인터페이스 추상화 메소드를 무시합니까?
- 7. 인터페이스를 구현해야하는 모든 메소드를 얻으려면 어떻게해야합니까?
- 8. MVP에서 Presenter 용 인터페이스를 사용하는 이유는 무엇입니까?
- 9. org.w3c.dom.Document 인터페이스의 메소드를 호출 할 수있는 이유는 무엇입니까?
- 10. java.sql.Connection에서 일부 메소드를 오버라이드 할 수있는 이유는 무엇입니까?
- 11. 런타임 유형을 기반으로 기능을 추상화 할 수있는 디자인 패턴은 무엇입니까?
- 12. 읽을 수있는 스트림으로 푸시 할 수있는 이유는 무엇입니까?
- 13. Python에서 dbus를 사용하는 org.freedesktop.NetworkManager에서 메소드를 호출 할 수없는 이유는 무엇입니까?
- 14. 인터페이스 메소드를 구현하는 동안 virtual이 허용되는 이유는 무엇입니까?
- 15. Entity Framework를 사용하는 C# 데이터베이스 추상화 클래스
- 16. 앞으로 만 참조 할 수있는 이유는 무엇입니까?
- 17. DataFactory 인터페이스를 통해 액세스 할 수있는 리소스
- 18. Hashtable은 Map 인터페이스의 모든 메소드를 구현합니까? 피할 수있는 인터페이스의 모든 메소드를 정의해야합니다 자바에서 인터페이스를 구현하는 클래스 이후
- 19. 리플렉션을 통해서만이 Java 메소드를 사용할 수있는 이유는 무엇입니까?
- 20. C++ 클래스가 추상화 된 이유는 무엇입니까?
- 21. Java에서 메소드를 직렬화 할 수없는 이유는 무엇입니까?
- 22. 보호 된 수정자를 사용하는 함수를 대체 할 수 있고 모든 곳에서 액세스 할 수있는 이유는 무엇입니까?
- 23. java.util.Comparator의 equals() 메소드가 추상화 된 이유는 무엇입니까?
- 24. scala.io.Source가 모든 코어를 사용하는 이유는 무엇입니까?
- 25. 클래스가 인터페이스를 구현해야하는 이유는 무엇입니까?
- 26. Java에서 잠금을 직렬화 할 수있는 이유는 무엇입니까?
- 27. 데이터베이스 추상화 계층을 사용하면 얻을 수있는 장점은 무엇입니까?
- 28. 개인 메서드를 호출 할 수있는 이유는 무엇입니까?
- 29. preparedStatement와 resultSet에서 배치와 get 메소드를 사용하는 방법에 대한 인터페이스를 제공합니다.
- 30. 인터페이스를 다시 선언해야하는 이유는 무엇입니까?
당신은 질문에 직접 대답했습니다 ... – jlordo
대답을 질문으로 작성하고 동의하십시오. – Maroun
http://stackoverflow.com/questions/10040069/abstract-class-vs-interface-in-java –