Une classe abstraite est une classe qui ne peut pas être instanciée. Ils sont généralement destinés à être étendus / sous-classes et ont généralement des «méthodes abstraites» qui doivent être implémentées par des sous-classes.
"Classe abstraite" et "interface" sont des concepts similaires, l'interface étant la plus abstraite des deux. Un facteur de différenciation est que les classes abstraites fournissent des implémentations de méthodes pour les classes dérivées lorsque cela est nécessaire. En C #, toutefois, ce facteur de différenciation a été réduit par l’introduction …
Je connais la syntaxe, les règles appliquées à la classe abstraite et je veux savoir utiliser une classe abstraite La classe abstraite ne peut pas être instanciée directement mais peut être étendue par une autre classe Quel est l'avantage de le faire? Comment est-ce différent d'une interface? Je sais qu'une …
Quelqu'un peut-il expliquer en détail comment fonctionne exactement la table virtuelle et quels pointeurs sont associés lorsque des fonctions virtuelles sont appelées. S'ils sont en fait plus lents, pouvez-vous indiquer que le temps nécessaire à l'exécution d'une fonction virtuelle est plus long que les méthodes de classe normales? Il est …
Bien que cela ne soit pas obligatoire dans la norme C ++, il semble que la façon dont GCC implémente les classes parentes, y compris les classes abstraites pures, consiste à inclure un pointeur vers la table v pour cette classe abstraite à chaque instanciation de la classe en question …
En tant que développeur C ++, je suis assez habitué aux fichiers d'en-tête C ++ et je trouve utile d'avoir une sorte de "documentation" forcée à l'intérieur du code. J'ai généralement du mal à lire du code C # à cause de cela: je n'ai pas ce genre de carte …
Dans les années 2000, un de mes collègues m'a dit que c'était un anti-modèle de rendre les méthodes publiques virtuelles ou abstraites. Par exemple, il a considéré une classe comme celle-ci pas bien conçue: public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) { …
Considérez l'exemple ci-dessous. Toute modification de l'énumération ColorChoice affecte toutes les sous-classes IWindowColor. Les énumérations ont-elles tendance à provoquer des interfaces fragiles? Existe-t-il quelque chose de mieux qu'une énumération pour permettre une plus grande flexibilité polymorphe? enum class ColorChoice { Blue = 0, Red = 1 }; class IWindowColor { …
Si le lancer System.Exceptionest considéré comme si mauvais, pourquoi n'a-t-il pas été Exceptionfait abstracten premier lieu? De cette façon, il ne serait pas possible d'appeler: throw new Exception("Error occurred."); Cela imposerait l'utilisation d'exceptions dérivées pour fournir plus de détails sur l'erreur qui s'est produite. Par exemple, lorsque je veux fournir …
J'ai actuellement deux classes dérivées, Aet B, qui ont toutes deux un champ en commun et j'essaie de déterminer s'il doit remonter dans la classe de base. Elle n'est jamais référencée à partir de la classe de base, et dire si à un moment donné, une autre classe est dérivée, …
Récemment, j'ai commencé à faire le tour de la POO et je suis maintenant au point où plus je lis sur les différences entre les classes abstraites et les interfaces, plus je deviens confus. Jusqu'à présent, aucun des deux ne peut être instancié. Les interfaces sont des plans plus ou …
J'y pensais et j'avais des doutes. Lorsque je déclare une interface, par exemple: public interface MyInterface { public void method1(); public void method2(); } Ces méthodes d'interface pourraient-elles être considérées comme abstraites? Ce que je veux dire, c'est que le concept d'une méthode abstraite est: Une méthode abstraite est une …
Y a-t-il une différence entre public class A extends AbstractB implements C {...} contre... public class A extends AbstractB {...} abstract class AbstractB implements C {...} Je comprends que dans les deux cas, la classe A finira par se conformer à l'interface. Dans le second cas, AbstractBpeut fournir l'implémentation des …
En réponse à cette question, le consensus général était que les méthodes statiques ne sont pas censées être remplacées (et donc les fonctions statiques en C # ne peuvent pas être virtuelles ou abstraites). Ce n'est pas seulement le cas en C #; Java l'interdit également et C ++ ne …
Selon Herb Sutter, on devrait préférer les interfaces abstraites (toutes les fonctions virtuelles pures) aux classes abstraites en C ++ pour découpler l'implémentation autant que possible. Bien que je trouve personnellement cette règle très utile, j'ai récemment rejoint une équipe avec de nombreux programmeurs Java et dans le code Java, …
J'étudie la POO en C ++ et, même si je connais les définitions de ces 3 concepts, je ne sais pas vraiment quand ni comment l'utiliser. Utilisons cette classe pour l'exemple: class Person{ private: string name; int age; public: Person(string p1, int p2){this->name=p1; this->age=p2;} ~Person(){} void set_name (string parameter){this->name=parameter;} void …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.