Introduction à la liaison statique et à la liaison dynamique

Ce sont deux types de reliure. La liaison fait référence à l'association de l'appel de méthode au corps de méthode. Dans la liaison statique, toutes les affectations et déclarations se produisent au moment de la compilation. Ils ont plusieurs avantages et inconvénients les uns par rapport aux autres. En termes de performances, la liaison statique est meilleure que la liaison dynamique des méthodes et des variables. La liaison statique est également connue sous le nom de liaison précoce. Comme nous le savons tous, les méthodes de liaison comme statique, privée et finale se produisent au cours de la compilation tandis que dans le compilateur de liaison dynamique ne décide pas quelle méthode sera appelée.
L'exemple ci-dessous est un meilleur exemple à comprendre

Exemple 1

public class StaticBindingExample (
public static void main(String args()) (
Vehicle veh = new MotorBike();
veh.start();
)
)
class Vehicle (
static void start() (
System.out.println("vehicle will start now..");
)
)
class MotorBike extends Vehicle (
static void start() (
System.out.println("Bike will start now..");
)
)

Dans l'exemple ci-dessus, nous pouvons voir comment la liaison statique est destinée à empêcher la surcharge de la classe.

L'exemple ci-dessous montrera comment fonctionne la liaison dynamique, ici la méthode de classe enfant remplace la classe parent

Exemple # 2

public class StaticBindingExample (
public static void main(String args()) (
Vehicle veh = new MotorBike();
veh.start();
)
)
class Vehicle (
void start() (
System.out.println("vehicle will start now..");
)
)
class MotorBike extends Vehicle (
void start() (
System.out.println("Bike will start now..");
)
)

Dans cet exemple, statique n'est pas présent dans la méthode de démarrage sous la méthode de classe parent et enfant, donc la méthode du même nom remplacera la méthode de classe parent. Cela arrive à cause de cela.

Dans la capture d'écran ci-dessus, la sortie du programme est donnée.

Pourquoi la liaison statique et la liaison dynamique?

  1. Il est nécessaire que la programmation gère différentes situations en utilisant la liaison statique et dynamique.
  2. La liaison au moment de la compilation est connue sous le nom de liaison anticipée, c'est-à-dire lorsque vous devez déclarer des choses au moment de la compilation (au tout début) de l'exécution du programme. Dans Dynamic Binding, la liaison a lieu au moment de l'exécution, également appelé liaison tardive.
  3. La méthode et les variables, définies comme statiques, finales et privées, font référence à la liaison statique, tandis que les méthodes virtuelles auxquelles la liaison a lieu au moment de l'exécution sont appelées liaison dynamique.
  4. Surcharge de méthode / surcharge d'opérateur utilise la liaison statique, c'est donc l'un des meilleurs exemples de celle-ci, tandis que la surcharge utilise Dynamic, ce qui est connu comme le meilleur exemple de liaison dynamique.
  5. En cela, un objet réel n'est jamais utilisé alors qu'un objet réel est utilisé dans la liaison dynamique.

Exemples

Dans l'exemple ci-dessous, nous pouvons voir comment la liaison statique se produit

Exemple 1

// Implémentation de la classe parent

class Colony(
//Static method to start the electricity of the Colony
public static void start electricity()(
//printing the message here
System.out.println("Colony Electricity is On.");
)
)
//Child class implementation
class Building extends Colony(
//Static method to start the electricity of Building
public static void startElectricity()(
//printing the message here
System.out.println("Building Electricity is On.");
)
)
public class StaticBindingExample (
public static void main(String args()) (
//Creating object of the parent class type
Colony col = new Colony();
col.startElectricity();
//Creating object of the child class type
Colony col2 = new Building();
col2.startElectricity();
)
)

Dans le programme ci-dessus, col est la variable de référence de type classe Colony pointant vers l'objet de classe Colony. col2 est également la variable de référence de type classe Colony mais pointant vers l'objet de classe Building. Lorsque la compilation a lieu, alors que le compilateur de liaison ne vérifie jamais le type d'objet, il vérifie simplement le type de variable de référence.

Dans le programme ci-dessus, tel que col .startElectricity (), le compilateur vérifie si la définition de la méthode start electric () existe ou non dans la classe Colony, car col est de type Colony type. De même pour l'appel de méthode col2.startElectricity (), il vérifie si la méthode start electric () est présente dans la classe Colony ou non car col2 est également de type Colony. Il ne vérifie pas vers quel objet col, col2 pointe. ce type de liaison est appelé liaison statique.

Production:

La sortie ci-dessus du programme montre comment les membres statiques sont utilisés pour empêcher la substitution.

Exemple # 2

Dans l'exemple ci-dessous, nous pouvons voir comment la liaison dynamique se produit pendant l'exécution

// Implémentation de la classe parent

class Colony(
//method to start the electricity of the Colony
void startElectricity()(
//printing the message here
System.out.println("Colony Electricity is On.");
)
)
//Child class implementation
class Building extends Colony(
//method to start the electricity of Building
void startElectricity()(
//printing the message here
System.out.println("Building Electricity is On.");
)
)
public class StaticBindingExample (
public static void main(String args()) (
//Creating object of the parent class type
Colony col = new Colony();
col.startElectricity();
//Creating object of the child class type
Colony col2 = new Building();
col2.startElectricity();
)
)

Dans le programme ci-dessus, tout est le même que dans un exemple de programme statique mais dans cet exemple, le membre de la méthode «statique» est supprimé. Pendant cela, la méthode de l'objet principal vers lequel col.startElectricity () pointe sera appelée. Alors que pour l'appel col2.startElectricity (), la méthode de l'objet principal vers lequel col2 pointe sera appelée. Ce type de liaison est appelé liaison dynamique.

Production:

Avantage

  1. L'exécution de la liaison statique est plus efficace et plus rapide que Dynamic. Ce compilateur de liaison sait que ces types de méthodes ne peuvent pas être remplacés.
  2. Dans la liaison statique, le type est utilisé tandis que la liaison dynamique utilise des objets pour les liaisons.
  3. L'un des principaux avantages de Dynamic Binding est sa flexibilité, car il permet à une seule fonction de gérer différents types d'objet au moment de l'exécution.
  4. Dans la liaison statique, toutes les informations nécessaires avant l'heure de compilation tandis que dans la liaison dynamique, aucune information n'est disponible avant l'exécution.
  5. La liaison statique peut avoir lieu en utilisant des fonctions normales tandis que la liaison dynamique peut être réalisée en utilisant les fonctions virtuelles.

Conclusion

Ce sont quelques-uns des concepts importants de la programmation orientée objet. La liaison fait référence à l'exécution du code. Cela se produit au moment de la compilation tandis que la liaison dynamique se produit au moment de l'exécution. Définition, déclaration et portée de la déclaration, ce sont trois piliers importants de la liaison statique dans la liaison dynamique, nom de la liaison et durée de vie des questions de liaison.

Articles recommandés

Ceci est un guide de la liaison statique et de la liaison dynamique. Nous discutons ici de l'introduction, des utilisations et des avantages. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus–

  1. Types d'hébergement Web
  2. Surcharge et redéfinition en Java
  3. Directives AngularJS
  4. Polymorphisme en Java
  5. Méthode statique JavaScript | Travailler | Exemples