2011-01-21 22 views

risposta

37

Virtuale e astratto sono quasi la stessa cosa. Un metodo virtuale ha un'implementazione nella classe base che può essere sovrascritta, mentre un metodo astratto non lo è e deve essere sovrascritto in una classe figlia. Altrimenti sono uguali. La scelta tra di loro dipende dalla situazione. Se hai un'implementazione di base, usi virtual. Se non lo fai, e hai bisogno di ogni discendente per implementarlo per se stesso, scegli l'astratto.

I metodi di interfaccia sono implementazioni di un metodo dichiarato in un'interfaccia implementata dalla classe. Questo è del tutto estraneo agli altri due. Penso che un metodo possa essere sia virtuale che interfaccia. Il vantaggio delle interfacce è che si dichiara un'interfaccia (duh) che può essere implementata da due classi totalmente diverse. In questo modo, puoi eseguire lo stesso codice su due classi diverse, a condizione che i metodi che desideri chiamare siano dichiarati nell'interfaccia che condividono.

+4

per ulteriori dettagli su questo, vedere http://stackoverflow.com/a/3621600/8151. tl; dr: i metodi di interfaccia sono dichiarati virtuali nell'IL emesso. – cori

Problemi correlati