2013-04-25 15 views
95
  1. Esiste una classe implementata in classe statica? significa:Differenze di classi statiche e sigillate

    static class ABC : Anyclass 
    
  2. C'è qualche classe che può essere ereditata sia in classe chiusa e classe statica?
    mezzi:

    static class ABC : AClass {} 
    

    E

    sealed class ABC : AClass {} 
    

Che io possa essere sbagliato in qualche misura?

+8

Si dimentica il tag 'C# -2.0'. –

+0

'static' non ha nulla a che fare con' sealed' – ken2k

+0

Ma @ ken2k, le classi statiche sono sigillate di default in C#. Non sono loro? le classi statiche non partecipano affatto all'ereditarietà. – RBT

risposta

13

si può lasciare un'eredita sealed classe da un'altra classe, ma non è possibile ereditare da una classe sealed:

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

Una classe static non può ereditare da altre classi.

412

Questo può aiutare:

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

perché questo non è già accettato come risposta? – Immortal

+0

I secondo @Adelin per lo scambio delle intestazioni delle colonne con i valori nella prima colonna. Ho dovuto riadattare il mio modello mentale per un po 'mentre cercavo di dedurre le informazioni ritratte nella tabella. – RBT

+1

@RBT ora le intestazioni delle colonne sono invertite con le righe –

31

In parole semplici

statico Classe

Una classe può essere dichiarata static, indicando che essa contiene solo membri statici. Non è possibile creare istanze di una classe statica utilizzando la nuova parola chiave. Le classi statiche vengono caricate automaticamente dal Common Language Runtime (CLR) di .NET Framework quando viene caricato il programma o spazio dei nomi contenente la classe.

Sealed Classe

Una classe chiusa non può essere utilizzato come classe base. Le classi sigillate sono utilizzate principalmente per impedire la derivazione. Poiché non possono mai essere utilizzati come classe base , alcune ottimizzazioni in fase di runtime possono rendere i membri della classe sigillati leggermente più veloci.

1

risposta semplice è una classe chiusa non può essere utilizzata (as) una classe base.

Sto cercando di mostrare Sealed classe è una classe derivata nel seguente codice

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

e Un'altra caratteristica sigillata è solo di accesso Con istanza da essa. Per esempio

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

    } 
} 

Classi chiuse vengono utilizzati per limitare la funzionalità eredità di programmazione orientata agli oggetti. Una volta che una classe è definita come una classe sigillata, la classe non può essere ereditata.In C#, il modificatore sigillato viene utilizzato per definire una classe come sigillata. In Visual Basic .NET la parola chiave NotInheritable ha lo scopo di sealed.

0

1 - No, non è possibile implementare una classe statica.

2 - No, non è possibile ereditare da una classe statica o sigillata

+1

Potrebbe essere possibile aggiungere una piccola spiegazione al riguardo. – abdul

Problemi correlati