Se passer de instanceof et getClass()
Résolu
Miko
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
A un moment de notre TD notre professeur nous demande de vérifier le type d'une classe Article qui peut être soit Animal soit Nourriture, mais ceci sans avoir à utiliser instanceof ou getClass().
Il nous a été conseiller d'utiliser le dynamic binding, mais ne comprenant pas ce principe je vous demande de votre aide.
A un moment de notre TD notre professeur nous demande de vérifier le type d'une classe Article qui peut être soit Animal soit Nourriture, mais ceci sans avoir à utiliser instanceof ou getClass().
Il nous a été conseiller d'utiliser le dynamic binding, mais ne comprenant pas ce principe je vous demande de votre aide.
A voir également:
- Se passer de instanceof et getClass()
- Passer de qwerty a azerty - Guide
- Passer de windows 7 à windows 10 - Accueil - Mise à jour
- Identifiant et mot de passe - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
2 réponses
Bonjour,
Un modeste rappel sur la manière :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Un modeste rappel sur la manière :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Bonjour,
Dynamic binding sur Wikipedia.
C'est notamment lié à la redéfinition de méthodes.
L'idée est de dire que c'est l'objet qui porte ses méthodes et non le type défini dans le code.
Donc si j'ai une variable définie
Si l'objet est instancié comme étant de la classe Animal c'est les méthodes de la classe Animal que l'on va appeler, pas celle de Article.
Exemple :
Dynamic binding sur Wikipedia.
C'est notamment lié à la redéfinition de méthodes.
L'idée est de dire que c'est l'objet qui porte ses méthodes et non le type défini dans le code.
Donc si j'ai une variable définie
Article article;ça ne suffit pas pour dire que l'on va appeler les méthodes de la classe Article.
Si l'objet est instancié comme étant de la classe Animal c'est les méthodes de la classe Animal que l'on va appeler, pas celle de Article.
Exemple :
public class Article { boolean isAnimal() { return false; } boolean isNourriture() { return false; } } public class Animal extends Article { @Override boolean isAnimal() { return true; } } public class Nourriture extends Article { @Override boolean isNourriture() { return true; } } public class Test { public static void main(String[] args) { Article article1 = new Article(); System.out.println(article1.isAnimal()); // false System.out.println(article1.isNourriture()); // false Article article2 = new Animal(); System.out.println(article2.isAnimal()); // true System.out.println(article2.isNourriture()); // false Article article3 = new Nourriture(); System.out.println(article3.isAnimal()); // false System.out.println(article3.isNourriture()); // true } }