Fonctions abstraites
Résolu
olivbarb
Messages postés
303
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en train d'apprendre le Java et je me pose une question quant à l'utilité des fonctions abstraites.
J'ai bien compris l'intérêt des classes abstraites mais pour les fonctions ??? Étant donné qu'il faut les implémenter dans chaque classe qui les utilise, je ne vois pas pourquoi les définir dans une classe abstraites ou une interface.
Je suis en train d'apprendre le Java et je me pose une question quant à l'utilité des fonctions abstraites.
J'ai bien compris l'intérêt des classes abstraites mais pour les fonctions ??? Étant donné qu'il faut les implémenter dans chaque classe qui les utilise, je ne vois pas pourquoi les définir dans une classe abstraites ou une interface.
A voir également:
- Fonctions abstraites
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Fonctions excel en anglais - Guide
- Fonctions excel - Guide
- Aucun groupe de fonctions ni onglet n'est actuellement chargé dans le ruban - Forum Word
- Les fonctions logiques excel - Guide
3 réponses
Je ne connais pas Java mais le C++ et je suppose que ça se passe de la même manière.
Il y a une bonne raison pour déclarer des fonctions comme virtuelles:
- c'est la seule manière de déclarer des classes abstraites. Si une classe contient une fonction virtuelle alors la classe est abstraite; ce qui est logique puisqu'on ne peut instancier une classe dont une des fonctions n'est pas définie.
D'autre part l'avantage des fonctions virtuelles est justement de forcer à redéfinir ces fonctions dans les classes dérivées car la classe mère (qui est une classe généraliste) n'a pas de solution à offrir pour ces fonctions (qui sont spécifiques à chaque classe dérivée).
Il y a une bonne raison pour déclarer des fonctions comme virtuelles:
- c'est la seule manière de déclarer des classes abstraites. Si une classe contient une fonction virtuelle alors la classe est abstraite; ce qui est logique puisqu'on ne peut instancier une classe dont une des fonctions n'est pas définie.
D'autre part l'avantage des fonctions virtuelles est justement de forcer à redéfinir ces fonctions dans les classes dérivées car la classe mère (qui est une classe généraliste) n'a pas de solution à offrir pour ces fonctions (qui sont spécifiques à chaque classe dérivée).
Salut,
L'intérêt de la fonction abstraite réside dans la conception. Cela a particulièrement un sens lorsque tu fais un diagramme d'UML. Un exemple : imagine que tu souhaites instancier des animaux et leur faire faire des actions comme crier. Pour cela, pour faire plus propre tu vas créer une classe abstraite Animal avec une méthode abstraite crier(). Tu ne peux pas définir la méthode dans la classe Animal car cela dépend du nom de l'animal. Et ensuite, si tu choisis de créer une classe Chien, tu la fais hériter d'Animal, tu définis la méthode creer() pour dire qu'il s'agit de l'aboiement. Et tu continues avec d'autres animaux. Voilà grosso modo la philosophie. ^^.
Cdlt
L'intérêt de la fonction abstraite réside dans la conception. Cela a particulièrement un sens lorsque tu fais un diagramme d'UML. Un exemple : imagine que tu souhaites instancier des animaux et leur faire faire des actions comme crier. Pour cela, pour faire plus propre tu vas créer une classe abstraite Animal avec une méthode abstraite crier(). Tu ne peux pas définir la méthode dans la classe Animal car cela dépend du nom de l'animal. Et ensuite, si tu choisis de créer une classe Chien, tu la fais hériter d'Animal, tu définis la méthode creer() pour dire qu'il s'agit de l'aboiement. Et tu continues avec d'autres animaux. Voilà grosso modo la philosophie. ^^.
Cdlt