“Impossible de créer une instance de la classe abstraite ou une interface” C# message d'erreur
J'ai changé de classe de base pour abstract
pour un projet, et maintenant, je reçois le message d'erreur suivant:
Impossible de créer une instance de la classe abstraite ou une interface
Je reçois le message d'erreur parce que la dénomination d'une nouvelle instance d'un abstract
classe n'est pas autorisé?
newPlane = new Airplane_Abstract(name, position);
Vous avez deviné correctement.
des lignes directrices du cadre des lignes directrices du cadre des lignes directrices du cadre des lignes directrices du cadre
Lorsque vous revenez en arrière et lire un peu plus sur les classes abstraites, vous gifler votre front et aller "duh". msdn.microsoft.com/en-us/library/sf985hc5(v=vs. 71).aspx (premier point)
Belle réponse. +1.
Faites-vous référence à la
des lignes directrices du cadre des lignes directrices du cadre des lignes directrices du cadre des lignes directrices du cadre
Lorsque vous revenez en arrière et lire un peu plus sur les classes abstraites, vous gifler votre front et aller "duh". msdn.microsoft.com/en-us/library/sf985hc5(v=vs. 71).aspx (premier point)
Belle réponse. +1.
Faites-vous référence à la
_
le nom du type? Je demande parce que je ne me considère assez bien informés .NET maintenant (et j' pense c'est votre sens), mais je ne suis même pas sûr à 100% que ce commentaire moyens. Donc je doute que sa signification serait très clair pour quelqu'un qui est assez nouveau.OriginalL'auteur David Brewer | 2011-02-09
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas créer une instance d'une classe abstraite. Pensez-y comme une interface qui peut contenir une certaine logique de mise en œuvre. Que voulez-vous attendre si vous avez appelé un résumé de la méthode d'instance avec pas de définition?
abstract
classe, et une telle instance peut aussi être dit pour être une instance de la classe abstraite.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 va vous le dire!) bien sûr, vous créer des instances de non-abstraite sous-classes, mais ce n'est pas la question (qui était posé près de six ans...) Quel est votre point?
C'est juste une terminologie commentaire. Beaucoup de gens vont appeler une instance de la sous-classe d'une instance de la classe de base. Voir par exemple cette réponse dans un autre thread par Eric Lippert. Votre réponse est bien sûr tout à fait correct, je voulais juste dire que il ya cette autre terminologie qui leur est commun.
OriginalL'auteur Ed S.
J'ai vu votre question précédente, dans lequel vous avez demandé à propos de la signification de "virtuelle pure" (
abstract
en C#).La raison pour laquelle vous ne peut pas instancier une
abstract
classe, c'est qu'il a sans douteabstract
membres, avec pas de la mise en œuvre. Donc dire votre classe ressemble à ceci:Ensuite, en supposant que vous pourriez instancier un de ces, vous pouvez écrire du code comme ceci:
Certes, je ne crois pas que vous avez réellement ont d'avoir des membres abstraits dans une classe abstraite. Mais l'idée générale d'une classe abstraite, c'est que c'est celui qui ne peut pas exister sur son propre; il doit encore être définie dans une classe qui en hérite. Résumé les membres sont le plus évident illustration de pourquoi ce serait; il pourrait y avoir d'autres raisons.
Pense
Shape
, par exemple. C'est un assez bon exemple de quelque chose qui aurait du sens comme une classe abstraite. Vous ne pouvez pas vraiment instancier juste unShape
, pouvez-vous? ("Créer une forme." "Quel genre de forme?" "Aucune sorte. Juste une forme abstraite." Ne fonctionne pas vraiment, n'est ce pas?)OriginalL'auteur Dan Tao
Vous ne pouvez pas créer une instance d'une classe abstraite. C'est ce que résumé moyens.
OriginalL'auteur John Saunders