J'ai changé ma classe de base vers Impossible de créer une instance de la classe abstraite ou de l'interface p>
BlockQuote> am je reçois l'erreur car nommer une nouvelle instance d'un abstrait code> pour un projet et je reçois maintenant l'erreur suivante:
abstrait code> n'est pas autorisé? p>
newPlane = new Airplane_Abstract(name, position);
3 Réponses :
Vous ne pouvez pas créer d'instance d'une classe abstraite. Pensez-y comme une interface pouvant contenir également une certaine logique de mise en œuvre. Que vous attendriez-vous si vous appeliez une méthode d'inscription sans définition? P>
Bien sûr, vous peut i> créer une instance d'une classe de béton qui hérite de la classe code> abstraite de code>, et une telle instance peut également être décrite comme une instance de la classe abstraite.
@Jeppestignielsen: une classe abstraite est une classe qui déclare des méthodes abstraites. Vous ne pouvez pas créer une instance d'une classe abstraite (le compilateur vous le dira!) Bien sûr que vous peut créer des instances de sous-classes non abstraites, mais ce n'est pas la question (qui a été posée près de six il y a des années ...) Quel est ton point?
C'est juste un commentaire de terminologie. Beaucoup de gens appelleront une instance de la sous-classe une instance également la classe de base. Voir comme exemple Cette réponse dans un autre thread par Eric Lippert . Votre réponse est bien sûr entièrement correcte, je voulais juste dire qu'il y a cette autre terminologie commune.
Vous ne pouvez pas créer une instance d'une classe abstraite. C'est ce que abstrait em> signifie. P>
J'ai vu votre question précédente, dans laquelle vous avez posé une question sur la signification de "pur virtuel" ( La raison pour laquelle vous ne pouvez pas instancier un puis supposant que vous puissiez instancer l'un d'entre eux, vous pouvez écrire du code comme celui-ci: P> abstrait code> dans c #).
abstrait code > La classe est que cela a probablement des membres code> abstraites code>, avec aucune implémentation em>. Donc, disent que votre classe ressemble à ceci: p>
var airplane = new Airplane_Abstract();
// What would this be?
int integer = airplane.GetSomeInteger();
Directives-cadres Directives-cadres Directives Cadre-cadre Directives Cadre-cadre
Lorsque vous revenez en arrière et lisez un peu des cours abstraits, vous frappez votre front et allez-vous «duh». msdn.microsoft.com/en-us/library /sf985hc5(v=vs.71).aspx (première balle)
@WILL: Référez-vous du
_ code> dans le nom de type? Je demande parce que je me considérerais assez bien informés dans .net à partir de maintenant (et je pense I> C'est votre sens), mais je ne suis même pas sûr à 100% de ce que signifie ce commentaire. Je doute donc que sa signification serait très claire pour quelqu'un qui est assez nouveau à cela.