2012-02-03 13 views

risposta

14

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.

+5

È possibile creare classi astratte senza metodi astratti, semplicemente contrassegnando la classe come astratta ... –

+2

classe astratta significa che deve essere ereditato per essere istanziato. Non implica che dovrebbe avere metodi astratti come ha osservato Kirill Polishchuk. – ken2k

+0

@KirillPolishchuk Grazie Krill, non l'ho mai notato, ho corretto la risposta. –

1

Sì. La classe abstract non può essere istanziata (è necessario creare un'istanza di una classe che eredita dalla classe astratta), ma può contenere implementazioni.

1

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.

0

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 ... :)

+3

Puoi avere una classe astratta senza alcun membro astratto in C# –

6

È comune avere qualche implementazione in classi astratte.

Se non vi è alcuna implementazione, è consigliabile utilizzare un'interfaccia invece di una classe astratta.

Problemi correlati