est-il possible d'utiliser une méthode d'une classe abstraite? comment puis-je utiliser une méthode d'une classe sans avoir une instance?En utilisant une méthode d'une classe abstraite
Répondre
Si vous déclarez une méthode comme static
, vous pouvez l'appeler directement sans avoir besoin d'une instance de classe. Sinon, vous devrez avoir une instance d'une classe dérivée.
Étant donné qu'une classe abstraite ne peut pas être instanciée directement, vous ne pouvez pas appeler directement une méthode d'une classe abstraite sauf si est une méthode statique. Mais vous pouvez appeler une méthode statique d'une classe abstraite directement, voici un exemple rapide:
#include <iostream>
#include <ostream>
#include <fstream>
using namespace std;
class stest{
public:
static void test();
virtual void a() = 0;
};
void stest::test(){ cout << "test\n"; }
int main(){
stest::test();
return 0;
}
Alternativement, si vous avez une instance d'une classe qui est dérivée d'une classe abstraite, vous pouvez le traiter comme instance de la classe abstraite et peut appeler n'importe quelle méthode.
La classe abstraite n'implique pas que vous n'avez pas d'instance, elle implique que le type d'exécution de l'instance est en réalité une classe dérivée qui fournit des implémentations pour les fonctions virtuelles pures dans la classe de base abstraite. Mais toutes les fonctions membres d'une classe abstraite ne doivent pas être purement virtuelles, vous pouvez avoir un mélange de fonctions concrètes et abstraites. Lorsque vous appelez des fonctions membres "sur la classe abstraite", toutes les fonctions virtuelles, y compris les fonctions virtuelles pures, sont appelées polymorphiquement. Ainsi, le remplacement défini dans la classe dérivée est exécuté. Les fonctions non virtuelles appellent la définition dans la classe de base, vous ne pouvez pas avoir de fonctions concrètes concrètes, même une classe abstraite doit fournir une implémentation pour des fonctions non virtuelles.
Il est même possible pour une fonction virtuelle pure d'avoir une implémentation fournie par la classe de base abstraite. Un remplacement doit toujours être fourni, mais le remplacement peut appeler l'implémentation de la classe de base.
- 1. Pourquoi une classe abstraite devrait-elle implémenter une méthode abstraite d'une classe de base abstraite?
- 2. Méthode vide dans une classe abstraite
- 3. méthode abstraite dans une classe virtuelle
- 4. classe virtuelle en classe abstraite
- 5. Comment implémenter une classe abstraite en F #?
- 6. iPhone - méthode d'initialisation d'une classe abstraite
- 7. Méthode partielle à l'intérieur Classe abstraite (C#)
- 8. Classe abstraite en C++
- 9. Méthode de résolution d'erreur: "impossible d'instancier une classe abstraite"
- 10. classe abstraite refactorisation en C#
- 11. singleton en classe abstraite php
- 12. Jmockit exemple classe abstraite
- 13. en utilisant l-valeur avec la classe abstraite
- 14. Scala méthode abstraite est nulle dans la superclasse lorsque la sous-classe l'implémente en utilisant val?
- 15. C# abstraite méthode Dispose
- 16. Quand j'ai une classe abstraite, puis-je laisser une autre classe abstraite l'étendre?
- 17. MATLAB aide contenu pour une méthode abstraite
- 18. Accéder aux variables statiques dans une classe abstraite en PHP
- 19. conflit de classe abstraite en php
- 20. méthode abstraite héritée La surcharge
- 21. C# Classe abstraite, utilisant anonyme au lieu de déclarer une classe concrète?
- 22. Remplacer une méthode utilisant une classe partielle
- 23. mockForConstraintsTests classe abstraite groovy
- 24. Héritage d'une classe héritant d'une classe abstraite
- 25. Dériver la classe abstraite de la classe non abstraite
- 26. Comportement étrange avec la méthode paramétrée sur la classe abstraite
- 27. PHP classe avec interface et erreur sur la méthode abstraite
- 28. Ajouter un aspect à une méthode abstraite?
- 29. Désérialiser une classe abstraite dans Gson
- 30. Spécification du type de retour d'une méthode abstraite d'une classe de base selon une sous classe
merci beaucoup – cemregoksu