Statik ve Mühürlü sınıf farkları


150
  1. Statik sınıfta uygulanan herhangi bir sınıf var mı? anlamına geliyor:

    static class ABC : Anyclass
  2. Hem mühürlü hem de statik sınıftan miras alınabilecek herhangi bir sınıf var mı?
    anlamına geliyor:

    static class ABC : AClass {}

    Ve

    sealed class ABC : AClass {}

Bir şekilde yanlış olabilir miyim?


staticgerçekten hiçbir ilgisi yoksealed
ken2k

1
Ancak @ ken2k, statik sınıflar varsayılan olarak C # ile mühürlenir. Öyle değil mi? statik sınıflar mirasa hiç katılmazlar.
RBT

Yanıtlar:


654

Bu size yardımcı olabilir:

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

1
Muhteşem. Hemen yanıt için teşekkürler @HosseinNarimaniRad. Bilginin her zaman doğru olduğu için sabahın kendisinde sizi onaylamıştım, ancak bu sadece biçimlendirme sorunuydu. Btw, cevabınız gönderildiği andan itibaren kabul edilen cevap olmayı hak ediyor ama bunun için daha fazla beklemek zorundayız gibi görünüyor :)
RBT

Buna dayanarak, diğer türleri düşünmek ilginç. Bazıları gibi root classkalıtsal ve örneği, ancak devralamaz edilebilir. Bunun neden yararlı olacağından emin değilim, ama yine de
AustinWBryan

static class Foo : object { }geçerlidir, ancak esasen geçerlidir static class Foo { }.
themefield

39

Basit bir deyişle

Statik Sınıf

Bir sınıf yalnızca statik üyeler içerdiğini belirten statik olarak bildirilebilir. Yeni anahtar sözcüğü kullanarak statik sınıf örnekleri oluşturmak mümkün değildir. Sınıfı içeren program veya ad alanı yüklendiğinde statik sınıflar .NET Framework ortak dil çalışma zamanı (CLR) tarafından otomatik olarak yüklenir.

Mühürlü Sınıf

Mühürlü bir sınıf temel sınıf olarak kullanılamaz. Mühürlü sınıflar öncelikle türetmeyi önlemek için kullanılır. Asla bir temel sınıf olarak kullanılamayacağından, bazı çalışma zamanı optimizasyonları kapalı sınıf üyelerini çağırmayı biraz daha hızlı hale getirebilir.


19

Bir sağlayabilirsiniz sealedbaşka bir sınıftan sınıf devralır, ancak devralamaz gelen bir sealedsınıfa:

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

Bir staticsınıf diğer sınıflardan devralınamaz.


3

Her ikisini de şu şekilde ayırt edebilirsiniz:

       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

3

Basit cevap mühürlü bir sınıf temel sınıf olarak kullanılamaz olduğunu .

Mühürlü sınıf aşağıdaki kod türetilmiş bir sınıf olduğunu göstermeye çalışıyorum

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

ve başka bir mühürlü özelliğe yalnızca ondan örnekle erişilebilir. (ondan devralamazsınız)

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

    }
}

1

Mühürlü sınıflar:

  1. Örnek oluşturabilir, ancak devralınamaz
  2. Statik ve statik olmayan üyeler içerebilir.

Statik sınıflar:

  1. Örneklerini oluşturamaz veya devralmaz
  2. Yalnızca statik üyeler olabilir.

0

1 - Hayır, statik bir sınıf uygulayamazsınız.

2 - Hayır, statik veya kapalı bir sınıftan miras alınamaz


4
Belki biraz açıklama ekleyebilirsiniz.
abdul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.