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

C# 봉인(Sealed) 클래스란? 개념부터 예제 코드까지 완벽 정리

C#에서 봉인(sealed) 클래스sealed 키워드를 사용하여 선언된 클래스로, 다른 클래스가 상속할 수 없도록 제한하는 기능을 합니다. 즉, 한 번 봉인된 클래스는 기반(base) 클래스로 사용될 수 없습니다.

흥미로운 점은 sealed 키워드가 클래스뿐만 아니라 메서드에도 적용될 수 있다는 것입니다. 메서드에 sealed 한정자를 사용하면 해당 메서드는 더 이상 파생 클래스에서 재정의(override)될 수 없게 됩니다.

sealed 메서드의 조건

메서드에 sealed 한정자를 적용할 때는 다음 두 가지 조건을 반드시 충족해야 합니다.

  • 해당 메서드는 반드시 파생 클래스(derived class)에 속해 있어야 합니다.
  • 해당 메서드는 이미 재정의(override)된 메서드여야 합니다. 즉, 부모 클래스의 virtual 또는 abstract 메서드를 override한 메서드에만 추가로 sealed를 붙일 수 있습니다.

봉인 클래스 예제

다음은 C#에서 봉인 클래스를 사용하는 예제입니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Demo {
    class Program {
        static void Main(string[] args) {
            Result ob = new Result();
            string str = ob.Display();

            Console.WriteLine(str);
            Console.ReadLine();
        }
    }

    public sealed class Result {
        public string Display() {
            return "Passed";
        }
    }
}

봉인 클래스 멤버에 접근하는 방법

봉인 클래스는 상속이 불가능하기 때문에, 내부 멤버에 접근하려면 위 예제처럼 객체를 직접 생성해야 합니다. 봉인 클래스 내부에 정의된 메서드나 속성은 자식 클래스를 통해 접근할 수 없으며, 오직 인스턴스를 통해서만 사용할 수 있습니다.

public sealed class Result {
    public string Display() {
        return "Passed";
    }
}

봉인 클래스를 사용하는 이유

봉인 클래스는 단순히 상속을 막는 것 이상의 실질적인 장점을 제공합니다.

  • 설계 의도 보호: 클래스의 동작이 임의로 변경되거나 확장되는 것을 방지하여 안정성을 높입니다.
  • 보안 강화: 민감한 로직이 포함된 클래스가 악의적으로 변형되는 것을 막을 수 있습니다.
  • 성능 최적화: 컴파일러와 JIT가 상속 구조를 고려하지 않아도 되므로, 경우에 따라 호출 성능이 향상될 수 있습니다.

요약하자면, C#의 sealed 키워드는 클래스와 메서드에 적용되어 상속 및 재정의를 차단하는 역할을 하며, 코드의 안전성과 명확한 설계 의도를 전달하는 데 유용하게 활용됩니다.