Ce qu'on te propose en fait, c'est d'utiliser une méthode qui s'appelle le polymorphisme.
Quel que soit l'objet qui découle de ton interface, il devra suivre le contrat de cette interface : memes méthodes (et pas forcément mêmes constructeurs) entre autres.
Donc tes deux clients peuvent déscendre de la même interface, ce qui te permet de pouvoir avoir un constructeur dans l'un et pas dans l'autre.
Apres, au lieu de caster en client, tu cast en interface, et tu appelle les méthodes. Java se débrouillera tout seul pour aller chercher la bonne methode selon la classe qu'il aura, mais toi tu t'en fiche, tu appelles les méthodes sur une interface.
Pour te donner un exemple, supposons une interface Voiture qui a une methode accelerer().
Deux classes Clio et Twingo descendent de Voiture, donc doivent redéfinir cette méthode accelerer() pour coller au contrat de l'interface.
Maintenant, si je récupere une voiture, et que je ne sais pas si c'est une Twingo ou une Clio, je la récupère sous la forme d'une Voiture :
Voiture maVoitureInconnue=getVoiture();
Or, peu importe la voiture que j'aurai récupéré, je peux accélerer avec, donc appeller la méthode accelerer(), et ce même si elles ne sont pas construites de la même façon. C'est le même principe avec tes clients
Fred
Partager