From MSDN Library
추상 클래스도 이러한 종류의 다형성을 허용하지만 몇 가지 제한이 있습니다.
- 하나의 기본 클래스로부터만 클래스를 상속할 수 있으므로 추상 클래스를 사용하여 클래스 그룹에 다형성을 제공하려면 모든 클래스가 해당 클래스를 상속해야 합니다.
- 추상 클래스에서는 이미 구현된 멤버를 제공할 수도 있습니다. 따라서 추상 클래스를 사용하면 어느 정도 동일한 기능을 보장할 수 있지만 인터페이스로는 이러한 기능을 보장할 수 없습니다.
다음은 구성 요소에 다형성을 제공하기 위해 인터페이스를 사용할지 추상 클래스를 사용할지 여부를 결정하는 데 도움을 줄 수 있는 일부 권장 사항입니다.
- 여러 버전의 구성 요소를 만들 것으로 예상되는 경우 추상 클래스를 만듭니다. 추상 클래스는 간단하고 쉽게 구성 요소의 버전을 작성할 수 있는 방법을 제공합니다. 기본 클래스를 업데이트하면 모든 상속 클래스의 변경 내용이 자동으로 업데이트됩니다. 반대로 인터페이스는 한 번 만들면 변경할 수 없습니다. 새 버전의 인터페이스가 필요하면 완전히 새로운 인터페이스를 만들어야 합니다.
- 만들고 있는 기능이 광범위한 분산 개체에서 유용하게 사용될 것으로 예상되는 경우 인터페이스를 사용합니다. 추상 클래스는 주로 밀접하게 관련된 개체에 사용되는 반면 인터페이스는 관련되지 않은 클래스에 일반적인 기능을 제공하는 데 적합합니다.
- 작고 간결한 기능을 디자인하는 경우 인터페이스를 사용합니다. 그러나 큰 기능 단위들을 디자인하는 경우에는 추상 클래스를 사용합니다.
- 모든 구성 요소의 구현 사이에 일반적인 구현된 기능을 제공하려면 추상 클래스를 사용합니다. 추상 클래스를 사용하면 부분적으로 자신의 클래스를 구현할 수 있지만 인터페이스에서는 멤버를 구현하지 않습니다.
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.