Abstract 클래스의 정확한 용도는 무엇입니까? 평범한 클래스에서 추상적 인 클래스와 같은 것을 할 수 없는가?Abstract 클래스의 정확한 사용
답변
추상 클래스는 하위 클래스에서 상속해야하는 기본 기능이 있지만 기본 클래스를 인스턴스화하는 데 의미가 없을 때 사용됩니다. 예를 들어, Shape 기본 클래스와 같은 것이 있으면 하위 클래스에서 사용할 수있는 내장 구현과 하위 클래스에서 구현할 인터페이스 메소드를 가질 수 있습니다. 그러나 Shape 객체를 만드는 것이 타당하지 않을 수 있습니다. 추상 클래스는이 기능을 제공합니다. 추상 클래스 사용의 또 다른 좋은 예는 abstract factory pattern입니다.
구체적인 구현을 제공하지만 인스턴스화를 허용하지 않기 위해 추상 클래스를 사용합니다. 혼자 서있을 수 없다면 항상 이해할 수없는 일반 클래스를 인스턴스화 할 수 있습니다. 동시에 모든 구현 클래스에서 동일한 구현이있는 경우 인터페이스가 충분하지 않을 수 있습니다. 추상 클래스로 충분합니다.
- 인터페이스 : 계약에만, 아니 구현, 아니 인스턴스
- 추상 클래스 : 계약, 일부 구현, 아니 인스턴스
- 등급 : 정규 수업과는 달리 계약, 구현, 인스턴스
3 위 1 위 계약 가능합니다. 계약은 해당 메소드의 선언을 의미하기 때문에 "추상"을 의미합니다. 그리고 컴파일러는 추상 클래스로 변환한다. 왜 정상적인 클래스에서 계약이 가능한가? 논리가 잘못 되었다면 제게 올바른 말을하십시오. – devsda
, abstract
클래스는 abstract
개의 메소드를 포함 할 수 있습니다. 인터페이스 멤버와 매우 유사합니다.
정규 수업은 모든 구현을 제공해야하는 등, 다른 클래스에서 파생 필드 & 중첩 된 유형을 포함, 그들은 방법을 구현할 수 있습니다
한편, 그들은 단지 정규 수업이 할 수있는 다른 모든 것들에 대해 할 수있는 행동 양식.
인터페이스를 사용하면 이 아닌에 모든 구현에 대한 구현을 제공해야합니다.
추상 클래스는 구현을 포함하는 메소드를 모두 가질 수 있고 구현을 제공하지 않지만 상속 클래스를 제공해야하는 메소드를 가질 수있는 유일한 유형의 클래스입니다.
구현없이 메소드를 추가 할 수 있다는 사실은 추상 클래스를 인스턴스화 할 수없는 이유입니다. 모든 메소드에 대한 구현이있는 인스턴스 만 인스턴스화 할 수 있습니다.
- 1. Number 클래스의 Abstract 메서드
- 2. Java에서 abstract 클래스의 private 필드를 변경하는 방법?
- 3. 라텍스에서 'Abstract'
- 4. Abstract Java Grid
- 5. abstract java enum
- 6. Java - abstract 클래스
- 7. Ninject : Abstract Class
- 8. Abstract Interpreter는 어떻게 작동합니까?
- 9. C++ Abstract 템플릿을 사용하는 팩토리
- 10. 클래스의 Application.Resources 사용
- 11. 다른 클래스의 테이블 사용
- 12. 클래스의 개인 생성자 사용
- 13. 다른 클래스의 메서드 사용
- 14. 클래스의 ifstream 사용
- 15. 다른 클래스의 함수 사용
- 16. 추상 클래스의 올바른 사용
- 17. Zend Db Table Abstract select()
- 18. Microsoft ISF에서 정확한 BoundingBox를 사용 하시겠습니까?
- 19. 보호 된 생성자 및 MustInherit/Abstract 클래스
- 20. 정확한 텍스트 문자열을 포함하는 특정 클래스의 스팬을 찾으려면 어떻게합니까?
- 21. FileHelpers 매핑 클래스의 배열 사용
- 22. Array 클래스의 Linq 확장 사용
- 23. 리포지토리/서비스 클래스의 올바른 사용
- 24. 다른 클래스의 클래스 속성 사용
- 25. 기본 클래스의 모든 오버로드 사용
- 26. 비 활동 클래스의 의도 사용
- 27. 여러 프로젝트에서 클래스의 일부 사용
- 28. 어떻게 생성자를 abstract 클래스의 모든 서브 클래스에 강제적으로 정의 할 수 있습니까?
- 29. C++에서 Abstract 클래스의 모든 하위 클래스를 반복 할 수 있습니까?
- 30. Play Framework 및 모델 클래스의 컬렉션 사용
참조 : http://stackoverflow.com/questions/56867/interface-vs-base-class –
[템플릿 방법 디자인 패턴] (http://sourcemaking.com/design_patterns/template_method)을보세요. 추상 클래스는 거기에 대신 할 수 있습니다. – rafek