여러분은 Interface를 사용해야하는 조건을 설명 할 수 있으며 어떤 조건에서 추상 클래스를 선호해야합니까? 인터페이스와 추상 클래스의 차이점을 묻지는 않습니다.인터페이스를 사용하는 경우 및 추상 클래스를 사용하는 경우
답변
처음으로 유언을 선호해야합니다. 그 클래스에 몇 가지 공통 기능을 작성해야만 추상 클래스를 만들 수 있습니다. 그렇지 않으면 인터페이스를 사용하십시오. 왜냐하면 우리는 인터페이스의 수를 구현할 수 있기 때문에 하나의 클래스 만 확장 할 수 있으므로 나중에 추상 클래스가 아닌 인터페이스를 사용해야합니다.
공통 코드를 공유하는 것보다 상속을 사용하는 것이 있습니다. –
제게 설명해주세요. 좀 더 설명해 드리겠습니다. –
[이 답변 읽기] (http://stackoverflow.com/questions/479142/when-to-use-an-interface-instead-of-an-abstract-class-and - 그 반대의 경우) 그리고 다른 링크 된 ... –
다음과 같은 경우 Abstract class
을 사용하십시오. 하나의 장소에서만 구현해야하는 공통 기능 (메소드)이 있고 다른 구체적인 클래스가이를 사용할 수 있습니다.
다음과 같은 경우 Interface
을 사용하십시오. 일반적인 기능은 없습니다. 모든 구체적인 클래스에는 고유 한 기능 구현이 있습니다.
나는 다음과 같은 규칙에 충실 제안 : 당신이 추상 클래스가 정의 된 패키지에 대한 가시성을 제한 code-reuse
- 는, 단지 추상 클래스를 사용
그렇지 않으면 인터페이스와 위임을 사용하십시오. 그러나 소프트웨어 설계와 마찬가지로 각 구체적인 상황에 대해 적절한 결정을 내려야합니다. 적용해야하지만 유연성이 필요한 제한/규칙이있는 경우 상속보다 전략 패턴을 사용하는 것이 좋습니다.
추상 클래스의 문제점은 더 많은 것을 상속받을 수 없다는 것입니다. 따라서 유형이 A
이고 B
인 is
유형이 필요하며 둘 다 추상 클래스 인 경우이 방법을 어떻게 수행합니까? 인터페이스는 제한없이 다른 유형에 의해 구현되도록 열려 있습니다.
당신은 어떤 객체 사이의 관계는, 예를 들어 abstract
사용할 수 있나요 발견하는 경우 : Bird, Aeroplane, Paper Rocket
이러한 모든 비행 가능한하지만 당신이 여기 interface
대신 abstract
, 때문에 새 사용할 수 있도록, 더 어떤 Is a relationship
이러한 개체 간의 없다 비행기와 종이 로켓은 모두 비행 가능하지만 비행 방식은 다릅니다.
물론 Google에는 많은 차이가 있습니다.
- 1. SysFs 인터페이스를 사용하는 경우
- 2. 인터페이스를 구현하는 추상 클래스를 사용하는 AutoConfiguredMoqCustomization
- 3. 추상 클래스를 사용하는시기 및 .NET에서 인터페이스를 사용하는시기
- 4. COM 인터페이스를 사용하는 경우 System.InvalidCastException
- 5. Java에서 상속 또는 인터페이스를 사용하는 경우?
- 6. 추상 클래스를 사용하는 자바
- 7. 언제 추상 클래스와 인터페이스를 사용하는
- 8. UML에서 클래스를 기본 클래스로 사용하는 경우 클래스를 추상으로 선언해야합니까?
- 9. 추상 클래스 및 인터페이스 클래스를 사용하는 시나리오
- 10. 사용하는 경우?
- 11. 추상 클래스/인터페이스를 올바르게 사용하는 방법은 무엇입니까?
- 12. 게시물을 보낼 WebRequest 클래스를 사용하는 경우 POST
- 13. RuntimeException을 확장하는 사용자 정의 클래스를 사용하는 경우?
- 14. wcf 및 asp.net을 사용하는 경우?
- 15. onResume 및 onPause를 사용하는 경우
- 16. soundpool 및 setOnLoadCompleteListener를 사용하는 경우
- 17. QNetworkAccessManager 및 QTcpServer를 사용하는 경우
- 18. SOAPBinding.ParameterStyle.BARE 및 SOAPBinding.ParameterStyle.WRAPPED를 사용하는 경우
- 19. Soapobject 및 SoapPrimitive를 사용하는 경우
- 20. /proc 및/dev를 사용하는 경우
- 21. 안드로이드에서 서비스를 사용하는 경우
- 22. gcroot를 사용하는 경우 System.NullReferenceException
- 23. Gradle에서 DomainObjectCollection 및 NamedDomainObjectCollection을 사용하는 경우?
- 24. ab 프로그램을 사용하는 경우
- 25. Java에서 정수를 사용하는 경우
- 26. Slf4j & Log4j를 사용하는 경우
- 27. SharePointPermissionAttribute를 사용하는 경우
- 28. .xcconfig 파일을 사용하는 경우
- 29. MySQL의 : DISTINCT 사용하는 경우
- 30. WCF : 추상 클래스를 DataContract로 사용하는 방법
이 질문을 참조하십시오. http://stackoverflow.com/questions/12993123/confused-about-java-interface/12995321#12995321 –
나는 다음과 같이 말하고 싶다 : "상속에 대한 협력을 좋아한다"는 것은 거의 해석 될 수있다. .... 추상 클래스는 절대로 필요하지 않습니다 .... –
추상 클래스는 많은 상황에서 유용합니다 ... 해결할 문제에 대해 각 상황에 가장 적합한 답을 배워야합니다. –