Il compilatore non sembra preoccuparsene fino ad ora ma volevo solo ricontrollare se mi sto ponendo in errore in qualche modo implementando determinati metodi nella mia classe astratta.Le classi astratte possono implementare in C#?
risposta
Una classe astratta di solito ha uno o più metodi astratti. Quindi sì, può avere qualche metodo implementato. L'obiettivo è costringere l'utente ad implementare questi metodi per far funzionare un oggetto. A volte le classi astratte vengono utilizzate per fornire un'implementazione "base" di alcune interfacce, lasciando all'utente finale la possibilità di specificare solo i metodi chiave. Puoi anche avere una classe astratta senza alcun metodo astratto: in questo caso stai affermando che devi derivare da quella classe per usarla.
Sì. La classe abstract
non può essere istanziata (è necessario creare un'istanza di una classe che eredita dalla classe astratta), ma può contenere implementazioni.
Perfettamente bene per implementare alcuni metodi e lasciare altri astratti.
Se tutti i metodi dovevano essere astratti, si potrebbe anche usare un'interfaccia per questo.
va bene e consentito, un abstract class
ha almeno un membro (metodo/proprietà) non implementato in modo che non possa essere istanziato.
un interface
viene anche chiamato pure abstract class
che significa che è al 100% astratto, quindi non consente di specificare alcuna implementazione.
tenere presente che ci sono molti articoli e opinioni su non derivare mai una classe concreta da un'altra classe concreta ma solo da quelli astratti ... almeno questa era la tendenza in C++ fino a qualche anno fa, poi mi sono trasferito al lato C#, ha iniziato a lavorare di più e non ha avuto tempo di continuare a leggere quei bei articoli ... :)
Puoi avere una classe astratta senza alcun membro astratto in C# –
È comune avere qualche implementazione in classi astratte.
Se non vi è alcuna implementazione, è consigliabile utilizzare un'interfaccia invece di una classe astratta.
- 1. Come testare le classi astratte
- 2. C# Proprietà in classi base astratte
- 3. Alternative alle classi astratte in Ruby?
- 4. Decoratori C#: interfacce o classi astratte?
- 5. Le classi astratte hanno un VTABLE?
- 6. In che modo le classi astratte possono avere riferimenti ma non oggetti?
- 7. AutoMoqCustomization funziona per classi astratte?
- 8. Test delle unità Classi astratte in Groovy
- 9. Registrazione Java con classi astratte
- 10. Java classi astratte: Tornando puntatore "this" per le classi derivate
- 11. Le classi Mixin sono classi astratte di base
- 12. AS3 - Classi astratte
- 13. Le classi astratte in Scala hanno prestazioni migliori dei tratti?
- 14. . Net ereditarietà multipla da classi astratte
- 15. ECMAScript 6 ha una convenzione per le classi astratte?
- 16. Quando utilizzare le interfacce o classi astratte? Quando usare entrambi?
- 17. Qual'è l'utilità dei costruttori pubblici nelle classi astratte in C#?
- 18. Perché è preferibile utilizzare le interfacce anziché le classi astratte?
- 19. Classi astratte nelle relazioni GORM
- 20. Posso implementare automaticamente le classi?
- 21. Variabili statiche PHP in classi astratte
- 22. Espressioni lambda per classi astratte
- 23. Interfacce e classi astratte in F #
- 24. Implementare un comportamento comune in alternativa alle classi di base astratte?
- 25. Le classi astratte vuote sono una cattiva pratica e perché?
- 26. Perché dichiarare le classi statiche come sigillate e astratte in C#?
- 27. Classi astratte di Python - come scoraggiare l'istanza?
- 28. dovrei nominare tutte le mie classi astratte AbstractFoo
- 29. Qual è lo scopo delle classi astratte?
- 30. Le classi Xcode non possono "vedersi"
È possibile creare classi astratte senza metodi astratti, semplicemente contrassegnando la classe come astratta ... –
classe astratta significa che deve essere ereditato per essere istanziato. Non implica che dovrebbe avere metodi astratti come ha osservato Kirill Polishchuk. – ken2k
@KirillPolishchuk Grazie Krill, non l'ho mai notato, ho corretto la risposta. –