2013-04-25 6 views
95
  1. Gibt es Klassen, die in der statischen Klasse implementiert werden? bedeutet:Statische und versiegelte Klassenunterschiede

    static class ABC : Anyclass 
    
  2. Gibt es eine Klasse, die sowohl in der versiegelten Klasse und statische Klasse geerbt werden kann?
    Mittel:

    static class ABC : AClass {} 
    

    Und

    sealed class ABC : AClass {} 
    

Darf ich in gewissem Maße falsch sein?

+8

Sie vergessen 'C# -2.0'-Tag. –

+0

'static' hat wirklich nichts mit 'sealed' zu tun – ken2k

+0

Aber @ ken2k, statische Klassen sind standardmäßig in C# versiegelt. Sind sie nicht? Statische Klassen nehmen überhaupt nicht an der Vererbung teil. – RBT

Antwort

13

Sie können eine sealed Klasse erben von einer anderen Klasse lassen, aber man kann von eine sealed Klasse nicht erben:

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

A static Klasse nicht von anderen Klassen erben kann. Dies kann Sie

412

helfen:

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

Warum wird dies nicht bereits als Antwort akzeptiert? – Immortal

+0

I Sekunde @Adelin zum Austauschen der Spaltenüberschriften mit den Werten in der ersten Spalte. Ich musste mein mentales Modell für eine Weile neu justieren, während ich versuchte, die in der Tabelle dargestellten Informationen abzuleiten. – RBT

+1

@RBT jetzt Spaltenüberschriften werden mit den Zeilen invertiert –

31

In einfachen Worten

Statische Klasse

Eine Klasse statisch werden kann erklärt, was darauf hinweist, dass es nur statische Elemente enthält. Es ist nicht möglich, Instanzen einer statischen Klasse mit dem neuen Schlüsselwort zu erstellen. Statische Klassen werden automatisch von der .NET Framework-CLR (Common Language Runtime) geladen , wenn das Programm oder der Namespace, der die Klasse enthält, geladen wird.

versiegelte Klasse

Versiegelter Klasse kann nicht als Basisklasse verwendet werden. Versiegelte Klassen werden hauptsächlich verwendet, um Ableitung zu verhindern. Da sie nie als Basisklasse verwendet werden können, können einige Laufzeitoptimierungen dazu führen, dass versiegelte Klassenmitglieder etwas schneller aufgerufen werden.

1

einfache Antwort ist eine versiegelte Klasse kann nicht (as) Basisklasse verwendet werden.

Ich versuche Sie Klasse zu zeigen, Sealed ist eine abgeleitete Klasse in den Code unten

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

und andere Sealed Funktion ist nur Zugriff Mit Instanz von ihm. Für das Beispiel

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

    } 
} 

Versiegelte Klassen werden verwendet, um die Vererbung Merkmal der objektorientierten Programmierung zu beschränken. Sobald eine Klasse als eine versiegelte Klasse definiert ist, kann die Klasse nicht vererbt werden.In C# wird der versiegelte Modifikator verwendet, um eine Klasse als versiegelt zu definieren. In Visual Basic .NET dient das NotInheritable-Schlüsselwort dem Zweck von versiegelt.

0

1 - Nein, Sie können keine statische Klasse implementieren.

2 - Nein, Sie können nicht von einer statischen oder versiegelten Klasse geerbt werden

+1

Vielleicht kannst du eine kleine Erklärung dazu hinzufügen. – abdul

Verwandte Themen