2013-02-27 15 views
11

Ho letto dei metodi virtuali in C#. Esiste un concetto chiamato classe virtuale in C#? La classe astratta in C# e la classe virtuale in C++ sono le stesse?Esiste una classe virtuale in C#?

Grazie in anticipo.

+3

Cosa intendi con una classe virtuale in C++? Intendi l'inerenza virtuale o una classe con una pura funzione virtuale? – shf301

risposta

16

Non c'è niente di simile in C# - e non è realmente necessario poiché l'ereditarietà di implementazione multipla non è supportata. Fare un abstract di classe significa solo che non puoi creare istanze di quella classe e che potrebbero non essere completamente implementate (ad esempio potrebbero contenere metodi astratti).

6

Non ci sono classi virtuali in C#. La classe astratta non è la stessa poiché non è possibile creare un'istanza di una classe astratta.

È possibile fare l'opposto di contrassegnare qualcosa di virtuale contrassegnandolo con sealed, che ne impedisce l'ereditarietà.

3

io opinare con un link a questo precedente SO messaggio: In C++ what is a virtual base class?

Come altri hanno detto, dal momento che C# non ha l'ereditarietà multipla, la necessità di avere una "classe base virtuale" che limita l'ereditarietà multipla non è necessario, quindi non si applica a C#. Solo i membri in C# possono essere virtuali.

Problemi correlati