다음을 통해 공유


클래스를 봉인하여 확장성 제한

봉인을 사용하여 개발자가 프레임워크를 확장할 수 있는 방법을 제한할 수 있습니다. 클래스를 봉인하면 이 클래스에서 다른 클래스가 상속될 수 없습니다. 멤버를 봉인하면 파생 클래스가 멤버 구현을 재정의할 수 없습니다. 형식과 멤버는 기본적으로 봉인해서는 안 됩니다. 라이브러리 형식과 멤버를 봉인하면 해당 형식과 멤버를 사용자 지정할 수 없게 되고 일부 개발자의 유용성 판단에 영향을 줍니다. 이외에도 확장성은 개체 지향 프레임워크를 사용하는 데 따른 기본 이점 중 하나입니다. 이러한 이점을 제한하는 결정을 내릴 때는 주의를 기울여야 합니다.

반드시 필요한 경우가 아니면 클래스는 봉인하지 않습니다.

클래스 확장이 필요하지 않은 경우에는 클래스를 봉인할 수 있는 것으로 간주하지 마십시오. 클래스를 봉인하려면 다음과 같은 특정 조건을 충족시켜야 합니다.

  • 클래스가 정적입니다.

  • 클래스에 보안상 중요한 정보로 보호되고 상속된 멤버가 포함되어 있습니다.

  • 클래스는 많은 가상 멤버를 상속하므로 각 멤버를 봉인하기 위한 테스트 비용이 전체 클래스를 봉인하는 비용보다 훨씬 더 큽니다.

  • 클래스는 리플렉션을 사용한 빠른 검색이 필요한 특성입니다. 특성을 봉인하면 특성을 검색할 때 리플렉션의 성능이 향상됩니다.

sealed 형식에 대해 보호된 멤버 또는 가상 멤버를 선언하지 않습니다.

형식이 봉인된 경우 파생된 클래스가 없습니다. 보호된 멤버는 파생 클래스에서만 액세스할 수 있고 가상 멤버는 파생 클래스에만 재정의될 수 있습니다.

재정의하는 멤버를 봉인할 수 있습니다.

이 방법을 사용하면 파생 클래스가 현재 클래스 및 모든 파생 클래스에 필요한 동작을 수정하거나 건너뛰지 않습니다.

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.

참고 항목

개념

봉인되지 않은 클래스

기타 리소스

클래스 라이브러리 개발을 위한 디자인 지침

확장성을 위한 디자인