1 minute read

개념


봉인 클래스(Sealed Class)

만약 클래스가 다른 클래스에 상속되는것을 원하지 않을 떄 해당 클래스를 봉인 클래스로 선언할 수 있으며, 이때 아래와 같이 Sealed키워드로 선언을 합니다.

sealed class TestClass

봉인 클래스의 특징

  • 봉인 클래스는 상속을 피하거나 제한하기 위해 고안되었습니다.
  • 다른 클래스에 상속될 수 없으므로 상속 계층에서 최하위 클래스여야 합니다.
  • 봉인 클래스와 추상 클래스는 다릅니다.
  • 봉인 클래스는 추상 Method를 가질 수 없습니다.
  • sealed 키워드는 클래스뿐만 아니라 Method, Property에 사용할 수 있습니다.


추상 클래스와 차이점

  • 추상 클래스에는 추상 및 비추상 Method가 존재하지만, 봉인 클래스에는 추상 및 가상 Method가 존재할 수 없습니다.
  • 추상 클래스는 직접 인스턴스화할 수 없습니다. 하지만, 봉인 클래스는 인스턴스를 생성할 수 있습니다.
  • 추상 클래스를 사용하기 위해서는 확장된 클래스를 만들어야 합니다. 하지만, 봉인된 클래스에서 확장된 클래스를 만드는 것은 불가능합니다.
  • 추상 클래스는 상속 계층 구조에서 최하위 클래스가 될 수 없지만, 봉인 클래스는 최하위 클래스여야 합니다.



봉인 Method(Sealed Method)

부모 클래스에 정의된 클래스를 자식 클래스에서 재정의할 수 없는것을 봉인 Method(Sealed Method)라고 합니다.
클래스에서 메서드가 가상(virtual)으로 선언되면 자식 클래스가 Method를 재정의할 수 있습니다.


예제


간단하게 아래와 같이 sealed class라고 선언 후 작성하는 방식입니다.

sealed class SealedClass
{
    // Class members here
}


sealed class Rectangle
{
    private int length;
    private int width;

    public Rectangle(int l, int w)
    {
        length = l;
        width = w;
    }

    public int GetArea()
    {
        return length * width;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Rectangle r = new Rectangle(4, 5);
        Console.WriteLine("Area of rectangle = {0}", r.GetArea());
    }
}



Top