중국어로 봉인됨(Sealed)은 봉인됨을 의미하므로, 이름에서 수정된 클래스나 메서드는 상속되거나 재정의될 수 없음을 나타냅니다.
sealed 키워드의 역할:
클래스 선언에 sealing을 사용하면 다른 클래스가 이 클래스를 상속하는 것을 방지할 수 있습니다. 메서드 선언에 sealing 수정자를 사용하면 확장 클래스가 이를 재정의하는 것을 방지할 수 있습니다. 수업방식.
Sealed 수정자는 의도하지 않은 파생을 방지하는 데 주로 사용되지만 특정 런타임 최적화를 촉진할 수도 있습니다. 특히 봉인된 클래스에는 파생 클래스가 없으므로 봉인된 클래스 인스턴스의 가상 함수 멤버에 대한 호출은 처리를 위해 비가상 호출로 변환될 수 있습니다.
봉인 클래스:
봉인 클래스는 클래스가 다른 클래스에서 상속되는 것을 방지하기 위해 선언에 봉인 수정자를 사용합니다. 봉인된 클래스를 다른 클래스의 기본 클래스로 사용하려고 하면 C#에서 오류 메시지가 표시됩니다. 물론 봉인된 클래스는 동시에 추상 클래스일 수 없습니다. 추상화는 항상 상속되기를 원하기 때문입니다.
씰은 어떤 상황에서 사용되나요? 실제로 봉인된 클래스 내에 파생 클래스를 갖는 것은 불가능합니다. 봉인된 클래스 인스턴스에 가상 멤버 함수가 있는 경우 멤버 함수는 비가상으로 변환될 수 있으며 함수 한정자 virtual은 더 이상 적용되지 않습니다.
다음 예를 살펴보겠습니다.
abstract class AbstractClass { public abstract void Method( ) ; } sealed class SealedClass: AbstractClass { public override void Method( ) { //... } }
다음 코드를 작성하려고 하면
class OtherClass: SealedClass
{
}
C#은 이 오류를 지적하고 SealedClass가 봉인된 클래스이므로 SealedClass에서 어떤 클래스도 파생시키려고 시도할 수 없음을 알려줍니다.
봉인된 메서드:
C#에서는 메서드가 위치한 클래스의 파생 클래스에서 해당 메서드가 오버로드되는 것을 방지하기 위해 봉인된 메서드(sealedmethod)라는 개념도 제안합니다. 메소드에 봉인된 수정자를 사용할 수 있으며, 그런 다음 해당 메소드를 봉인된 메소드라고 부릅니다.
클래스의 모든 멤버 메서드를 봉인된 메서드로 사용할 수 있는 것은 아닙니다. 봉인된 메서드로 사용하려면 기본 클래스의 가상 메서드를 오버로드하고 특정 구현 메서드를 제공해야 합니다. 따라서 메서드 선언에서 봉인된 수정자는 항상 재정의 수정자와 함께 사용됩니다. 다음 예제 코드를 살펴보십시오.
using System ; class A { public virtual void F( ) { Console.WriteLine("A.F") ; } public virtual void G( ) { Console.WriteLine("A.G") ; } } class B: A { sealed override public void F( ) { Console.WriteLine("B.F") ; } override public void G( ) { Console.WriteLine("B.G") ; } } class C: B { override public void G( ) { Console.WriteLine("C.G") ; } }
클래스 B는 기본 클래스 A의 두 가상 메서드를 모두 오버로드합니다. 메서드 F는 봉인된 수정자를 사용하여 봉인된 메서드가 됩니다. G 메소드는 봉인된 메소드가 아니므로 B의 파생 클래스 C에서 메소드 G는 오버로드될 수 있지만 메소드 F는 오버로드될 수 없습니다
위 내용은 C#에서 봉인된 키워드의 역할에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!