산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# sealed 클래스와 메서드: 상속/오버라이딩 제한으로 코드 안전성·성능 높이기

C# sealed 클래스와 메서드 이해하기

이 가이드는 sealed 키워드로 C#에서 상속과 메서드 오버라이딩 제한하는 법을 실전 코드 예제와 함께 설명합니다.

Sealed 클래스 (Sealed Class)

C#에서 sealed 키워드는 클래스 상속 금지. 봉인된 클래스는 파생 타입 가질 수 없음.

예제:

using System;
namespace SealedClass {
    sealed class Animal { }
    // sealed 클래스 상속 시도 → 컴파일 에러
    class Dog : Animal { }
    class Program {
        static void Main (string [] args) {
            Dog d1 = new Dog();
            Console.ReadLine();
        }
    }
}

컴파일러 에러:

error CS0509: 'Dog': cannot derive from sealed type 'Animal'

Sealed 메서드 (Sealed Method)

가상 메서드 오버라이드 시 추가 오버라이딩 방지하려면 override 앞에 sealed 접두사.

예제:

using System;
namespace SealedClass {
    class Animal {
        public virtual void MakeSound() {
            Console.WriteLine("Animal Sound");
        }
    }
    class Dog : Animal {
        // 봉인된 오버라이드
        sealed public override void MakeSound() {
            Console.WriteLine("Dog Sound");
        }
    }
    class Puppy : Dog {
        // sealed 메서드 재오버라이드 시도 → 컴파일 에러
        public override void MakeSound() {
            Console.WriteLine("Puppy Sound");
        }
    }
    class Program {
        static void Main (string [] args) {
            Puppy d1 = new Puppy();
            Console.ReadLine();
        }
    }
}

결과 에러:

error CS0239: 'Puppy.MakeSound()': cannot override inherited member 'Dog.MakeSound()' because it is sealed

팁: 다단계 상속 체인에서 오버라이드된 메서드 봉인으로 추가 오버라이딩 차단.


왜 Sealed 클래스 사용하는가?

  1. 보안과 무결성 – Sealed 클래스 확장 불가로 동작 예측 가능, 서브클래스에 의한 변조 방지.
  2. 성능 – 런타임이 서브클래스 없음 알면 sealed 타입 더 적극 최적화 가능.
  3. 정적 유틸리티 타입 – 많은 라이브러리 sealed 클래스로 정적 멤버 제공(예: System.Drawing의 Pens).

예: Pens 클래스는 표준 색상용 미리 구성된 Pen 인스턴스 제공:

Pen bluePen = Pens.Blue; // 파란색 펜 표현

Pens이 sealed라 정적 멤버가 다른 타입에 의해 오버라이드/변경 불가.

C 언어

  1. C# 클래스와 객체: 견고한 OOP를 위한 기초 다지기
  2. C# 추상 클래스와 추상 메서드: 실전 가이드
  3. C# partial 클래스와 partial 메서드 이해하기
  4. C++ 클래스와 객체: 객체지향 프로그래밍 실전 가이드
  5. C++ 프렌드 함수와 프렌드 클래스: 접근 제어 마스터하기
  6. Java 마스터하기: 객체, 클래스, 핵심 OOP 개념 이해
  7. C# 상속 마스터하기: 재사용 가능하고 유지보수하기 쉬운 코드 작성
  8. C# 다형성: 정적 바인딩 vs 동적 바인딩 완전 이해
  9. ASTM A729 Class A: 이중 노말라이징 및 템퍼링 강 - 주요 특성 및 표준
  10. ASTM A649 Class 2 노말라이징 및 템퍼링 강 - 사양 및 특성