Abstract class & Interfaces

From MSDN Library

추상 클래스도 이러한 종류의 다형성을 허용하지만 몇 가지 제한이 있습니다.

  • 하나의 기본 클래스로부터만 클래스를 상속할 수 있으므로 추상 클래스를 사용하여 클래스 그룹에 다형성을 제공하려면 모든 클래스가 해당 클래스를 상속해야 합니다.
  • 추상 클래스에서는 이미 구현된 멤버를 제공할 수도 있습니다. 따라서 추상 클래스를 사용하면 어느 정도 동일한 기능을 보장할 수 있지만 인터페이스로는 이러한 기능을 보장할 수 없습니다.

다음은 구성 요소에 다형성을 제공하기 위해 인터페이스를 사용할지 추상 클래스를 사용할지 여부를 결정하는 데 도움을 줄 수 있는 일부 권장 사항입니다.

  • 여러 버전의 구성 요소를 만들 것으로 예상되는 경우 추상 클래스를 만듭니다. 추상 클래스는 간단하고 쉽게 구성 요소의 버전을 작성할 수 있는 방법을 제공합니다. 기본 클래스를 업데이트하면 모든 상속 클래스의 변경 내용이 자동으로 업데이트됩니다. 반대로 인터페이스는 한 번 만들면 변경할 수 없습니다. 새 버전의 인터페이스가 필요하면 완전히 새로운 인터페이스를 만들어야 합니다.
  • 만들고 있는 기능이 광범위한 분산 개체에서 유용하게 사용될 것으로 예상되는 경우 인터페이스를 사용합니다. 추상 클래스는 주로 밀접하게 관련된 개체에 사용되는 반면 인터페이스는 관련되지 않은 클래스에 일반적인 기능을 제공하는 데 적합합니다.
  • 작고 간결한 기능을 디자인하는 경우 인터페이스를 사용합니다. 그러나 큰 기능 단위들을 디자인하는 경우에는 추상 클래스를 사용합니다.
  • 모든 구성 요소의 구현 사이에 일반적인 구현된 기능을 제공하려면 추상 클래스를 사용합니다. 추상 클래스를 사용하면 부분적으로 자신의 클래스를 구현할 수 있지만 인터페이스에서는 멤버를 구현하지 않습니다.

최 재훈

블로그, 페이스북, 트위터 고성능 서버 엔진, 데이터베이스, 지속적인 통합 등 다양한 주제에 관심이 많다.
Close Menu