programing

추상 클래스는 언제 사용합니까?

nasanasas 2020. 10. 14. 07:53
반응형

추상 클래스는 언제 사용합니까?


다음은 추상 클래스 에 대한 MSDN 기사 이지만 실제로 이해하지 못합니다 ...

추상 클래스는 언제 사용해야합니까? 추상 클래스를 사용하면 어떤 이점이 있습니까?


추상 클래스는 상속 및 다형성을 위해 클래스가 필요할 때 유용하지만 클래스 자체를 인스턴스화하는 것은 의미가 없으며 하위 클래스 만 인스턴스화합니다. 공통 구현 코드를 공유하는 하위 클래스 그룹에 대한 템플릿을 정의하려고 할 때 일반적으로 사용되지만 수퍼 클래스의 개체를 만들 수 없도록 보장하려는 경우에도 사용됩니다.

예를 들어 Dog, Cat, Hamster 및 Fish 오브젝트를 만들어야한다고 가정 해 보겠습니다. 그들은 행동뿐만 아니라 색상, 크기, 다리 수와 같은 유사한 속성을 가지고 있으므로 Animal 수퍼 클래스를 만듭니다. 그러나 동물은 어떤 색입니까? 동물 개체에는 몇 개의 다리가 있습니까? 이 경우 Animal 유형의 개체를 인스턴스화하는 것이 아니라 하위 클래스 만 인스턴스화하는 것이 타당합니다.

추상 클래스는 또한 다형성에 추가적인 이점이 있습니다. (추상) 수퍼 클래스의 유형을 메서드 인수 또는 반환 유형으로 사용할 수 있습니다. 예를 들어 train () 메서드가있는 PetOwner 클래스가있는 경우 Animal의 모든 하위 유형에 대한 메서드를 만드는 대신 Animal 유형의 개체 (예 : train (Animal a))를 가져 오는 것으로 정의 할 수 있습니다.


추상 클래스를 사용함으로써 우리는 클래스를보다 포괄적으로 만들 수 있습니다.

예를 들어, 클래스 A가 추상 클래스이고 클래스 클래스 B, 클래스 C 및 클래스 D가 추상 클래스 A를 확장하는 경우 이러한 하위 클래스는 추상 클래스 A에서 이미 선언 된 메서드를 상속하여 메서드를보다 일반적으로 만듭니다.


생성되지 않을 클래스에 사용하지만 (효과적으로 존재하지 않음) 다형성 이유로 상속하고 싶습니다.


객체를 직접 인스턴스화하는 데 절대 사용되지 않는 클래스 계층 구조의 클래스에 대한 동작을 정의 할 때 추상 클래스를 사용하십시오.

그러니 잠시 자신을 신으로 생각하십시오. CBabyBoy 및 CBanyGirl 클래스는 생성되는 견고한 개체이므로 추상적이지 않습니다. 반면에 CPerson 및 CAnimal 클래스는 추상적 일 것입니다. 유형 계층의 관점에서 유용하지만 실행되지는 않습니다.CAnimal dingbat = new Animal();


Richard는 추상 클래스가 비추 상 클래스에 비해 장점이 있다는 를 제공 했습니다 .

추상 클래스와 인터페이스 중에서 선택할 수있는 팩트 테이블을 추가하고 싶습니다. 이미지는 여기 에서 찾을 수 있습니다 .

여기에 이미지 설명 입력


기본적으로 계층 구조의 일부 엔터티가 논리적으로 메서드를 가질 때 추상 클래스를 사용해야합니다. 구현 방법은 모르지만 하위 항목이 있습니다. 웹에는 수십억 개의 '실제'사례가 있습니다.

참고 URL : https://stackoverflow.com/questions/2570814/when-to-use-abstract-classes

반응형