web-dev-qa-db-ja.com

静的クラスとシールドクラスの違い

  1. 静的クラスに実装されるクラスはありますか?手段:

    static class ABC : Anyclass
    
  2. シールクラスと静的クラスの両方で継承できるクラスはありますか?
    手段:

    static class ABC : AClass {}
    

    そして

    sealed class ABC : AClass {}
    

ある程度間違っているかもしれませんか?

139
Saurabh Mahajan

これはあなたを助けるかもしれません:

+--------------+---+-------------------------+------------------+---------------------+
|  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          |
+--------------+---+-------------------------+------------------+---------------------+
614

簡単な言葉で

静的クラス

クラスは静的と宣言でき、静的メンバーのみが含まれていることを示します。 newキーワードを使用して静的クラスのインスタンスを作成することはできません。静的クラスは、クラスを含むプログラムまたは名前空間が読み込まれると、.NET Framework共通言語ランタイム(CLR)によって自動的に読み込まれます。

密閉クラス

シールクラスは基本クラスとして使用できません。シールドクラスは、主に派生を防ぐために使用されます。基本クラスとしては決して使用できないため、実行時の最適化によっては、シールクラスのメンバーの呼び出しがわずかに速くなる場合があります。

37
PaRiMaL RaJ

sealedクラスに別のクラスを継承させることはできますが、fromsealedクラスを継承することはできません。

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

staticクラスは他のクラスから継承できません。

18
C.Evenhuis

簡単な答えは封印されたクラスは基本クラスとして使用できませんです。

封印されたクラスが以下のコードの派生クラスであることを示しています

 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();

    }
}
2
Amin Saadati

単純に両方を区別することができます:

       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
1
Abdul

1-いいえ、静的クラスを実装することはできません。

2-いいえ、静的クラスまたはシールクラスから継承することはできません

0
Smaiil