Les langages de programmation tels que Java et C # prennent en charge la programmation orientée objet (OOP). Il permet de construire un logiciel en utilisant des objets. Il existe de nombreux objets dans un système logiciel ou un programme. Ces objets ont des attributs et des méthodes. Les attributs décrivent les caractéristiques. Les méthodes décrivent les actions pouvant être effectuées par l'objet. Les données sont transmises à travers des objets à l'aide de méthodes. Les valeurs requises sont envoyées via des appels de méthode avec des paramètres. L'implémentation réelle de la méthode est dans la définition de la méthode. Il existe un lien entre un appel de méthode et une définition de méthode. Il est connu comme contraignant. Il existe deux types de liaisons. Ce sont des liaisons statiques et dynamiques. le différence clé entre la liaison statique et la liaison dynamique est que, dans une liaison statique, la liaison est résolue au moment de la compilation, tandis que la liaison dynamique est résolue au moment de l'exécution, qui correspond au temps d'exécution réel.. Cet article traite de la différence entre ces deux mécanismes de liaison.
1. Vue d'ensemble et différence clé
2. Qu'est-ce que la liaison statique?
3. Qu'est-ce que la reliure dynamique?
4. Similarités entre la liaison statique et la liaison dynamique
5. Comparaison côte à côte - Liaison statique vs liaison dynamique sous forme tabulaire
6. Résumé
La liaison est le lien entre un appel de méthode et ses définitions.
Figure 01: Liaison statique et liaison dynamique
Reportez-vous au programme ci-dessous écrit en Java.
public class A
public void method1 ()
System.out.println («Méthode1»);
public void method2 ()
System.out.println («Method2»);
public static void main (String [] args)
A obj = new A ();
obj.method1 ();
obj.method2 ();
Selon le programme ci-dessus, un objet de type A est créé. Alors method1 et method2 sont appelés. L'identification de la méthode à appeler pour l'exécution est appelée liaison. La déclaration obj.method1 () appelle method1 () et obj.method2 () appelle method2 (). Ce lien est contraignant.
En liaison statique, la liaison est résolue au moment de la compilation par le compilateur. Il est également connu comme liaison anticipée. La liaison se produit avant qu'un programme ne soit réellement exécuté. La liaison statique se produit dans la surcharge de méthode. Reportez-vous au programme ci-dessous écrit en Java.
public null Calcul
somme publique nulle (int x, int y)
System.out.println («Sum is», x + y);
somme publique nulle (double x, double y)
System.out.println («Sum is», x + y);
public static void main (String [] args)
Calcul cal = new Calculation ();
cal.sum (2,3);
cal.sum (5,1, 6,4);
Selon le programme ci-dessus, lors du passage des deux entiers, la méthode avec deux entiers sera invoquée. En passant deux valeurs doubles, la méthode correspondant à deux valeurs doubles sera invoquée. Ce processus de liaison a lieu au moment de la compilation. Le compilateur sait qu'il doit appeler la méthode sum avec deux valeurs entières pour cal.sum (2,3). Pour cal (5.1,6.4), il appellera la méthode sum avec deux valeurs doubles. Toutes les informations requises sont connues avant l'exécution, ce qui augmente l'efficacité et la vitesse d'exécution du programme..
Dans Dynamic Binding, le compilateur ne résout pas la liaison au moment de la compilation. La liaison a lieu au moment de l'exécution. Il est également connu comme liaison tardive. La liaison dynamique se produit lors du remplacement de méthode. Reportez-vous au programme écrit en Java.
Classe publique Shape ()
public void draw ()
System.out.println («Dessiner une forme»);
public class Circle () étend Shape
public void draw ()
System.out.println («Tracer un cercle»);
Classe publique Triangle () étend Shape
public void draw ()
System.out.println («Tracer un triangle»);
Classe publique Test
public static void main (String [] args)
Formes;
s = nouvelle forme ();
s.draw ();
s = nouveau cercle ();
s.draw ();
s = nouveau triangle ();
s.draw ();
Selon le programme ci-dessus, la classe Shape a une méthode draw (). Classe Circle et la classe Triangle étend la classe Shape. La classe Circle et la classe Triangle peuvent hériter des attributs et des méthodes de la classe Shape. Par conséquent, la classe Shape est la super classe ou la classe parente. Classe Circle et Class Triangle sont des sous-classes ou des classes dérivées. Ces classes ont également la méthode draw () avec leurs propres implémentations. Par conséquent, la méthode draw () dans la super classe est remplacée.
Dans la méthode principale, différents objets sont appelés. Il existe une variable de référence de type Shape, qui est s. Ensuite, s appelle la méthode en fonction de la classe spécifique. Au moment de la compilation, le compilateur se référera uniquement à la méthode draw de la super classe. Lorsque l'exécution effective commence, cela entraîne l'exécution de différentes méthodes de tirage. Premièrement, s désignera l’objet de type Shape. Par conséquent, il invoquera la méthode draw dans la classe Shape. Ensuite, le s pointera l'objet de type Circle et invoquera la méthode draw de la classe Circle. Enfin, s fera référence à l'objet de type Triangle et invoquera la méthode draw dans la classe Triangle. Même si la variable de référence est de type Shape, la liaison dépend du type d'objet. Ce concept s'appelle Dynamic Binding. Les informations sont fournies au moment de l'exécution, de sorte que la vitesse d'exécution est plus lente que celle d'une liaison statique..
Liaison statique vs liaison dynamique | |
La liaison statique est le type de liaison qui collecte toutes les informations requises pour appeler une fonction pendant la compilation.. | La liaison dynamique est le type de liaison qui collecte toutes les informations requises pour appeler une fonction pendant l'exécution.. |
Temps de reliure | |
La liaison statique se produit au moment de la compilation. | La liaison dynamique se produit au moment de l'exécution. |
La fonctionnalité | |
La liaison statique utilise les informations de type pour la liaison. | Liaison dynamique utilise des objets à résoudre pour lier. |
Objet réel | |
La liaison statique n'utilise pas d'objet réel pour la liaison. | Liaison dynamique, utilisez l'objet réel pour la liaison. |
Synonymes | |
La liaison statique est également appelée liaison précoce. | La liaison dynamique est également appelée liaison tardive. |
Exécution | |
La vitesse d'exécution est rapide en liaison statique. | La vitesse d'exécution est faible en liaison dynamique. |
Exemple | |
La liaison statique est utilisée dans la surcharge de méthode. | La liaison dynamique est utilisée dans le remplacement de méthode. |
Il existe un lien entre un appel de méthode et une définition de méthode. Il est connu comme contraignant. Il existe deux types de liaisons appelées liaison statique et liaison dynamique. La différence entre la liaison statique et la liaison dynamique réside dans le fait qu'en liaison statique, la liaison est résolue au moment de la compilation, tandis que la liaison dynamique est résolue au moment de l'exécution, qui correspond au moment réel de l'exécution. Comme les informations requises sont fournies avant l'exécution, la liaison statique est rapide, comparée à la liaison dynamique..
Vous pouvez télécharger la version PDF de cet article et l'utiliser à des fins hors ligne, conformément à la note de citation. Veuillez télécharger la version PDF ici: Différence entre la liaison statique et la liaison dynamique
1.Java Interview 04 - Liaison statique vs liaison dynamique, didacticiels Mahika, 27 déc. 2017. Disponible ici