Differenza tra interfaccia, classe astratta, classe sigillata, classe statica e classe parziale in C#? Se tutte le classi sono disponibili in vb.net?Differenza tra interfaccia, classe astratta, classe sigillata, classe statica e classe parziale in C#?
risposta
seguito sono le differenze tra astratti e interfaccia:
classi astratte sono dichiarazione di metodo nonché definizione di un metodo che interfacce hanno solo dichiarazione di metodo.
Le classi astratte sono note come classi astratte parziali mentre le interfacce sono conosciute come classi completamente astratte.
Le caratteristiche di classe astratte vengono ereditate dalle classi figlio mentre le caratteristiche di interfaccia devono essere implementate nelle classi di implementazione.
Le classi astratte supportano gli specificatori di accesso mentre le interfacce non supportano gli specificatori di accesso.
Le classi astratte hanno variabili normali e variabili costanti mentre le interfacce non hanno variabili.
Possiamo scrivere costruttori in classi astratte mentre non possiamo scrivere costruttori in interfacce.
"le interfacce non supportano gli specificatori di accesso". - Ho usato esplicitamente interno e pubblico per impostazione predefinita. –
Interfaccia: definizioni dei metodi solo
classe astratta: alcune implementazioni di metodo, alcuni metodi astratti (definizione metodo solo)
classe Sealed: Una classe da cui si may non ereditato
Classe statica: una classe con solo stati Metodi c (istanze esistono, tutti i metodi possono essere chiamati senza un'istanza)
classe parziale: Una classe che definita in 2 o più definizioni classi separate in diversi moduli.
Sì, sono tutti disponibili sia in C# che in VB, sebbene VB utilizzi parole chiave diverse in alcuni casi.
Una classe normal
può essere istanziata in fase di esecuzione per formare un oggetto con campi (i campi sono proprietà, funzioni, eventi, ecc.). Una classe normal
può anche essere ereditata/sottoclassata.
L'aggiunta di una delle parole chiave aggiuntive cambia il modo in cui la classe funziona.
- L'aggiunta di
public, private, protected
modifica il modo in cui il codice può vedere e utilizza questa classe. - L'aggiunta di
static
a una classe indica che non è possibile creare un'istanza con la nuova parola chiave, ma è possibile accedervi solo tramite la funzione statica. Esempio:String.IsNullOrEmpty()
. - L'aggiunta di
sealed
a una classe significa che nessun'altra classe può ereditare la classe "sealed".
Le interfacce sono contracts
che dicono che una classe di implementazione fornirà alcune funzionalità. L'interfaccia IDisposable
dice che tutte le classi che la implementano avranno una funzione Dispose.
In classe astratta è possibile fornire più funzionalità senza influire sulla classe figlio. Nell'interfaccia, se aggiungiamo qualsiasi metodo all'interfaccia, allora interesserà tutta la classe figlio.
Penso che dovresti elaborare più il tuo post per assicurarti che fornisca una risposta adeguata all'OP. Dai anche un'occhiata alle nostre domande frequenti: http://stackoverflow.com/faq. In bocca al lupo. – ForceMagic
Immagino che il seguente collegamento sarà utile per voi.
http://letschattechnology.com/interface-vs-abstract-classes/
la differenza logica di base è di creare classe astratta quando v'è una relazione tra due classi che erediterà la classe astratta e si crea l'interfaccia per le classi che non sono legati gli uni agli altri, ma hanno alcune funzionalità comune.
Qualcun altro ha fatto clic su questo link ?? Non mi ha portato a nulla di codice correlato ... era un collegamento piuttosto cattivo per me lol – fifamaniac04
@ fifamaniac04: Mi dispiace, il collegamento era cambiato. Ho aggiornato il collegamento. Dovresti essere in grado di vedere quel post ora. – Sumit
classe astratta
dovrebbe essere usata quando v'è un IS-A rapporto e nessun caso dovrebbe essere consentito di essere creati da questa classe astratta. Esempio: un animale è una classe base astratta da cui si possono derivare specifici animali, ad esempio cavallo, maiale ecc. Rendendo Animale astratto non è consentito creare un'istanza Animale.interfaccia
Un'interfaccia dovrebbero essere utilizzati per implementare la funzionalità in una classe. Supponiamo che vogliamo che un cavallo salti, che possa essere creata un'interfaccia IJumping. Aggiungendo questa interfaccia a Horse, dovrebbero essere implementati tutti i metodi in IJumping. In IJumping solo le dichiarazioni (ad esempio StartJump e EndJump sono definite), in Horse devono essere aggiunte le implementazioni di questi due metodi.classe chiusa
Facendo cavallo sigillato, non è possibile ereditare da esso, ad esempio fare lezioni come Pony o WorkHorse che ti piacerebbe ereditare da Horse.classe statica
Per lo più utilizzato per le funzioni di 'utilità'. Supponiamo che tu abbia bisogno di un metodo per calcolare la media di alcuni numeri da utilizzare nella classe Horse, ma non vuoi metterlo in Horse poiché non è correlato e non è correlato agli animali, puoi creare una classe per avere questo tipo di metodi. Non hai bisogno di un'istanza di tale classe di utilità.classe parziale
una classe parziale non è altro che dividere il file di una classe in più file più piccoli. Una ragione per farlo potrebbe essere quella di condividere solo parte del codice sorgente ad altri. Se il motivo è che il file diventa troppo grande, pensa prima a suddividere la classe in classi più piccole.
eccellente e molto facile. non potrebbe trovare così facile come quello molte grazie –
- 1. Classe parziale sigillata
- 2. Differenza tra classe astratta e Trait
- 3. Sigillatura di classe astratta o interfaccia in classe .NET
- 4. stesso metodo di interfaccia e classe astratta
- 5. Differenza tra classe genitore e super classe
- 6. C# delegato e classe astratta
- 7. differenza tra "classe A; classe B" e "classe A :: B"
- 8. Derive classe astratta da classe non astratta
- 9. Qual è la differenza tra una classe astratta e un'interfaccia?
- 10. Classe base o classe astratta?
- 11. refactoring classe astratta in C#
- 12. Interfaccia/standard di codifica di classe astratta
- 13. Estendi interfaccia a una classe astratta
- 14. C# migliore implementazione dell'interfaccia parziale in classe base/astratta
- 15. Differenza tra blocco statico e assegnazione statica in classe?
- 16. "classe statica in Objective C"
- 17. C# classe statica perché usare?
- 18. Qual è la differenza tra classe astratta e interfaccia in termini di archiviazione in JVM
- 19. classe statica e singleton
- 20. php: quando utilizzare la classe astratta e di interfaccia?
- 21. astratta classe derivata dalla classe concreta
- 22. Usa la classe statica per interfaccia?
- 23. Quali sono le differenze tra la classe finale e la classe sigillata in Scala?
- 24. Registrati classe astratta e risolvere classe derivata con Unity
- 25. classe astratta php che estende un'altra classe astratta
- 26. Differenza tra caricare una classe e istanziarla
- 27. OOP Differenza tra una classe derivata e una classe ereditata?
- 28. una classe astratta eredita un altro problema classe astratta
- 29. Qual è la differenza tra una classe statica e una classe normale?
- 30. Qual è la differenza tra una classe astratta e una statica?
Leggere un libro o un'introduzione a C#. O se sei coraggioso, lo spec. ECMA. – leppie
@leppie - Le specifiche ECMA sono sorprendentemente facili da seguire secondo me. – ChaosPandion
@ChaosPandion: Sì, sono d'accordo, ma non per un principiante che non capisce i concetti sottostanti. – leppie