Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 추상 클래스 vs 봉인(Sealed) 클래스 vs 클래스 멤버 완벽 정리

C#에서 추상 클래스(abstract class)는 추상 메서드와 일반 메서드를 모두 포함할 수 있으며, 직접 인스턴스를 생성할 수 없는 클래스입니다. 반면 봉인 클래스(sealed class)는 상속을 차단하여 다른 클래스의 기반(base) 클래스로 사용할 수 없습니다.

추상 클래스(Abstract Class)

추상 클래스를 선언하려면 클래스 정의 앞에 abstract 키워드를 붙여야 합니다. 추상 메서드를 정의하는 추상 클래스의 클래스 멤버 예시는 다음과 같습니다.

public abstract class Vehicle {
    public abstract void display();
}

추상 메서드는 구현부가 없기 때문에 메서드 정의 뒤에 세미콜론(;)만 붙입니다. 즉, 메서드의 시그니처만 선언하고 실제 동작은 이를 상속받는 파생 클래스에서 반드시 재정의(override)해야 합니다.

추상 클래스의 주요 특징은 다음과 같습니다.

  • new 키워드로 객체를 직접 생성할 수 없습니다.
  • 추상 메서드와 비추상(일반) 메서드를 함께 가질 수 있습니다.
  • 생성자와 필드도 포함할 수 있습니다.
  • 추상 멤버는 파생 클래스에서 반드시 구현해야 합니다.

봉인 클래스(Sealed Class)

봉인 클래스를 선언하려면 클래스 정의 앞에 sealed 키워드를 붙입니다. 봉인 클래스는 상속을 방지하므로 기반 클래스로 사용할 수 없습니다.

public sealed class Test {
    // 여기에 클래스 멤버가 옵니다
}

봉인 클래스의 주요 특징은 다음과 같습니다.

  • 다른 클래스가 이 클래스를 상속할 수 없습니다.
  • 보안이나 설계 의도를 지키기 위해 클래스 확장을 막고 싶을 때 유용합니다.
  • 객체 생성 자체는 자유롭게 할 수 있습니다.

정리: 언제 무엇을 사용할까?

공통 기능을 정의하면서 파생 클래스마다 다르게 동작해야 한다면 추상 클래스를, 더 이상의 상속이 필요 없어 클래스를 고정하고 싶다면 봉인 클래스를 사용하는 것이 좋습니다. 두 키워드는 목적이 정반대이므로, 설계 단계에서 상속 구조를 어떻게 가져갈지 먼저 결정한 후 선택하는 것이 바람직합니다.