2014-04-30 11 views
0

여러분은 Interface를 사용해야하는 조건을 설명 할 수 있으며 어떤 조건에서 추상 클래스를 선호해야합니까? 인터페이스와 추상 클래스의 차이점을 묻지는 않습니다.인터페이스를 사용하는 경우 및 추상 클래스를 사용하는 경우

+0

이 질문을 참조하십시오. http://stackoverflow.com/questions/12993123/confused-about-java-interface/12995321#12995321 –

+0

나는 다음과 같이 말하고 싶다 : "상속에 대한 협력을 좋아한다"는 것은 거의 해석 될 수있다. .... 추상 클래스는 절대로 필요하지 않습니다 .... –

+0

추상 클래스는 많은 상황에서 유용합니다 ... 해결할 문제에 대해 각 상황에 가장 적합한 답을 배워야합니다. –

답변

-1

처음으로 유언을 선호해야합니다. 그 클래스에 몇 가지 공통 기능을 작성해야만 추상 클래스를 만들 수 있습니다. 그렇지 않으면 인터페이스를 사용하십시오. 왜냐하면 우리는 인터페이스의 수를 구현할 수 있기 때문에 하나의 클래스 만 확장 할 수 있으므로 나중에 추상 클래스가 아닌 인터페이스를 사용해야합니다.

+0

공통 코드를 공유하는 것보다 상속을 사용하는 것이 있습니다. –

+0

제게 설명해주세요. 좀 더 설명해 드리겠습니다. –

+0

[이 답변 읽기] (http://stackoverflow.com/questions/479142/when-to-use-an-interface-instead-of-an-abstract-class-and - 그 반대의 경우) 그리고 다른 링크 된 ... –

0

다음과 같은 경우 Abstract class을 사용하십시오. 하나의 장소에서만 구현해야하는 공통 기능 (메소드)이 있고 다른 구체적인 클래스가이를 사용할 수 있습니다.

다음과 같은 경우 Interface을 사용하십시오. 일반적인 기능은 없습니다. 모든 구체적인 클래스에는 고유 한 기능 구현이 있습니다.

0

나는 다음과 같은 규칙에 충실 제안 : 당신이 추상 클래스가 정의 된 패키지에 대한 가시성을 제한 code-reuse

  • 필요한 경우

    • 는, 단지 추상 클래스를 사용

    그렇지 않으면 인터페이스와 위임을 사용하십시오. 그러나 소프트웨어 설계와 마찬가지로 각 구체적인 상황에 대해 적절한 결정을 내려야합니다. 적용해야하지만 유연성이 필요한 제한/규칙이있는 경우 상속보다 전략 패턴을 사용하는 것이 좋습니다.

    추상 클래스의 문제점은 더 많은 것을 상속받을 수 없다는 것입니다. 따라서 유형이 A이고 Bis 유형이 필요하며 둘 다 추상 클래스 인 경우이 방법을 어떻게 수행합니까? 인터페이스는 제한없이 다른 유형에 의해 구현되도록 열려 있습니다.

  • 1

    당신은 어떤 객체 사이의 관계는, 예를 들어 abstract 사용할 수 있나요 발견하는 경우 : Bird, Aeroplane, Paper Rocket 이러한 모든 비행 가능한하지만 당신이 여기 interface 대신 abstract, 때문에 새 사용할 수 있도록, 더 어떤 Is a relationship 이러한 개체 간의 없다 비행기와 종이 로켓은 모두 비행 가능하지만 비행 방식은 다릅니다.

    물론 Google에는 많은 차이가 있습니다.

    관련 문제