Selon les mots de Layman:
La même raison pour laquelle les fabricants d'appareils électriques ont construit leurs produits avec des fiches électriques au lieu de simplement décortiquer les câbles, et les maisons sont équipées de prises murales au lieu de câbles décollés qui dépassent du mur.
En utilisant des prises standard à la place, ils permettent de brancher les mêmes appareils dans n'importe quelle prise compatible dans la maison.
Du point de vue de la prise murale, peu importe si vous branchez un téléviseur ou une chaîne stéréo.
Cela rend à la fois l'appareil et la prise plus utiles.
Prenons par exemple une méthode qui accepte une carte comme argument.
La méthode fonctionnera indépendamment du fait que vous lui passiez un HashMap ou un LinkedHashMap, tant qu'il s'agit d'une sous-classe de Map.
C'est le principe de substitution de Liskov .
Dans l'exemple de code que vous avez donné, cela signifie que vous pouvez ultérieurement, pour une raison quelconque, modifier l'implémentation concrète de Hash et vous n'aurez pas besoin de modifier le reste du code.
Le problème avec le logiciel est que, comme il est relativement facile de changer les choses plus tard sans gaspiller de briques ou de mortier, les gens supposent que ce genre de prévoyance ne vaut pas la peine. Mais la réalité nous a montré que la maintenance logicielle coûte très cher.