Vidéo: 14 - Polymorphisme Java 2024
Polymorphisme est un terme de science informatique sophistiqué qui fait référence à la capacité de Java à utiliser des variables de classe de base pour se référer à des sous-classes. et utiliser des méthodes surchargées de la sous-classe même si la sous-classe n'est pas connue lorsque le programme est compilé.
Ouf! C'est une bouchée. Ce qui revient à dire que chaque fois qu'un paramètre appelle un type particulier, vous pouvez utiliser un objet créé à partir d'une sous-classe de ce type à la place.
Par exemple, supposons que vous développiez une application capable de jouer au vénérable jeu Tic-Tac-Toe, et que vous créiez une classe nommée Player qui représente l'un des joueurs. Cette classe a une méthode publique nommée move qui retourne un int pour indiquer quel carré du tableau le joueur veut marquer.
Pour garder les choses simples, la méthode de déplacement choisit aveuglément le premier carré vide sur le plateau comme son mouvement. C'est, bien sûr, une stratégie terrible pour gagner au Tic-Tac-Toe. Par conséquent, vous décidez de créer une meilleure version de la classe, appelée BetterPlayer. Vous implémentez la classe BetterPlayer en tant que sous-classe de la classe Player, mais remplacez la méthode move pour que la classe BetterPlayer effectue des mouvements plus intelligents que la classe Player.
Supposons que vous ayez aussi écrit une méthode nommée MakeAMove dans la classe principale de l'application Tic-Tac-Toe (appelée TicTacToe). La méthode MakeAMove ressemble à ceci:
public void MakeAMove (Player p) {int i = p. bouge toi(); return i;}
Vous pouvez appeler la méthode MakeAMove comme ceci:
int m = MakeAMove (new Player ());
Dans ce cas, la méthode MakeAMove renvoie le premier carré vide du tableau.
Mais supposons que vous l'appeliez comme ceci:
int m = MakeAMove (nouveau BetterPlayer ());
Dans ce cas, la méthode MakeAMove retournera un mouvement mieux pensé car la classe BetterPlayer utilise un meilleur algorithme pour déterminer le prochain mouvement du joueur.