[C#] 정적 및 밀봉 클래스 차이

  1. 정적 클래스로 구현되는 클래스가 있습니까? 방법:

    static class ABC : Anyclass
  2. 봉인 클래스와 정적 클래스 모두에서 상속 될 수있는 클래스가 있습니까?
    방법:

    static class ABC : AClass {}

    sealed class ABC : AClass {}

어느 정도 틀릴 수 있습니까?



답변

이것은 당신을 도울 수 있습니다 :

+--------------+---+-------------------------+------------------+---------------------+
|  Class Type  |   | Can inherit from others | Can be inherited | Can be instantiated |
|--------------|---|-------------------------+------------------+---------------------+
| normal       | : |          YES            |        YES       |         YES         |
| abstract     | : |          YES            |        YES       |         NO          |
| sealed       | : |          YES            |        NO        |         YES         |
| static       | : |          NO             |        NO        |         NO          |
+--------------+---+-------------------------+------------------+---------------------+


답변

간단한 말로

정적 클래스

정적 멤버 만 포함하고 있음을 나타내는 클래스를 static으로 선언 할 수 있습니다. new 키워드를 사용하여 정적 클래스의 인스턴스를 작성할 수 없습니다. 정적 클래스는 클래스가 포함 된 프로그램 또는 네임 스페이스가로드 될 때 .NET Framework CLR (공용 언어 런타임)에 의해 자동으로로드됩니다.

봉인 된 클래스

봉인 클래스는 기본 클래스로 사용할 수 없습니다. 봉인 클래스는 주로 파생을 방지하는 데 사용됩니다. 기본 클래스로 사용할 수 없기 때문에 일부 런타임 최적화는 봉인 클래스 멤버를 약간 빠르게 호출 할 수 있습니다.


답변

당신은 할 수 있습니다 sealed다른 클래스에서 클래스 상속을,하지만 당신은 상속 할 수 없습니다 에서sealed 클래스 :

sealed class MySealedClass : BaseClass // is ok
class MyOtherClass : MySealedClass     // won't compile

static클래스는 다른 클래스에서 상속 할 수 없습니다.


답변

두 가지를 단순히 다음과 같이 구별 할 수 있습니다.

       Sealed Class       |        Static Class
--------------------------|-------------------------
it can inherit From other | it cannot inherit From other
classes but cannot be     | classes as well as cannot be
inherited                 | inherited


답변

간단한 대답은 봉인 된 클래스를 기본 클래스로 사용할 수 없다는 것 입니다.

봉인 클래스가 아래 코드에서 파생 된 클래스임을 보여 주려고합니다.

 public sealed class SealedClass : ClassBase
{
    public override void Print()
    {
        base.Print();
    }
}

또 다른 봉인 된 기능은 인스턴스를 통해서만 액세스 할 수 있습니다 (상속 할 수는 없음).

 class Program
{
    static void Main(string[] args)
    {
        SealedClass objSeald = new SealedClass();
        objSeald.Name = "Blah blah balh";
        objSeald.Print();

    }
}


답변

봉인 된 수업 :

  1. 인스턴스를 만들 수 있지만 상속 할 수는 없습니다
  2. 정적 멤버와 비 정적 멤버를 포함 할 수 있습니다.

정적 클래스 :

  1. 인스턴스를 만들거나 상속 할 수 없습니다
  2. 정적 멤버 만 가질 수 있습니다.

답변

1-아니요, 정적 클래스를 구현할 수 없습니다.

2-아니요, 정적 또는 봉인 클래스에서 상속받을 수 없습니다.