Les interfaces de paradigme OOP utilisé pour comportement commun généralisé à travers un groupe d'objets un peu semblables. Par conséquent, vous utilisez une variable de type plus général, par ex. interface, vous ne pourrez utiliser que les méthodes courantes définies par l'interface. Puisque vous devriez être capable d'assigner à la variable d'interface n'importe quel descendance d'interface (classes qui implémente l'interface donnée) et être capable de travailler avec elle. Par conséquent, tout en assignant
Interface i = new Class();
les seules méthodes que vous serez en mesure d'accéder est ceux qui sont définis dans le Interface
. De plus, il est nécessaire de noter que cette variable sera liée dynamiquement au type d'exécution, par ex. Au Class
dans votre exemple, les appels pour les méthodes définies dans votre interface seront envoyés à l'implémentation de la classe.
Pensez aussi à ce qui suit, par exemple, vous avez des définitions:
interface Vehicle {
public void drive();
public void stop();
}
Maintenant, si vous écrivez du code:
Vehicle v = new BMW()
v.drive()
// do something else
v.stop()
il doit se comporter même lorsque vous remplacez new BMW()
avec new Mitsubishi()
, indépendamment du fait que probablement dans votre classe BMW
vous pourriez avoir
class BMW {
public void listenMusic()
}
Il est également appelé "Liskov substitution principle"
la notion Liskov d'un sous-type de comportement définit une notion de substituabilité pour les objets; c'est-à-dire que si S est un sous-type de T, alors les objets de type T dans un programme peuvent être remplacés par des objets de type S sans altérer aucune des propriétés souhaitables de ce programme.