Maison > Java > javaDidacticiel > Comment Java réalise-t-il le polymorphisme avec des mécanismes à la fois statiques et dynamiques ?

Comment Java réalise-t-il le polymorphisme avec des mécanismes à la fois statiques et dynamiques ?

Mary-Kate Olsen
Libérer: 2024-10-30 01:12:28
original
648 Les gens l'ont consulté

How Does Java Achieve Polymorphism with Both Static and Dynamic Mechanisms?

Polymorphisme en Java : un guide complet

En programmation orientée objet, le polymorphisme permet de traiter des objets de différentes classes comme des objets d'un superclasse commune. Java prend en charge le polymorphisme via deux mécanismes principaux : le polymorphisme statique et le polymorphisme dynamique.

Polymorphisme statique

Le polymorphisme statique, également connu sous le nom de surcharge de méthodes, se produit lorsque deux méthodes ou plus dans la même classe a le même nom mais des listes de paramètres différentes. Lors de la compilation, le compilateur détermine quelle méthode invoquer en fonction du nombre et des types d'arguments passés.

Exemple :

<code class="java">class Calculation {
  void sum(int a, int b) {}
  void sum(int a, int b, int c) {}
}

// Main method
Calculation obj = new Calculation();
obj.sum(10, 10, 10); // 30
obj.sum(20, 20); // 40</code>
Copier après la connexion

Dans cet exemple, la méthode sum est surchargé avec deux listes de paramètres différentes. Lorsque la méthode est appelée avec trois arguments, le compilateur choisit la méthode sum avec trois paramètres. A l'inverse, lorsque la méthode est appelée avec deux arguments, le compilateur choisit la méthode somme avec deux paramètres.

Polymorphisme dynamique

Polymorphisme dynamique, également appelé remplacement de méthode, se produit lorsque deux méthodes ou plus dans des classes différentes ont le même nom et la même signature. Pendant l'exécution, la machine virtuelle détermine quelle méthode appeler en fonction du type d'exécution de l'objet.

Exemple :

<code class="java">class Animal {
  public void move() {}
}

class Dog extends Animal {
  public void move() {}
}

// Main method
Animal a = new Animal(); // Animal reference and object
Animal b = new Dog(); // Animal reference but Dog object

a.move(); // "Animals can move"
b.move(); // "Dogs can walk and run"</code>
Copier après la connexion

Dans cet exemple, la méthode move est remplacé dans la classe Dog. Lorsque la méthode move est appelée sur la référence Animal a, l'implémentation Animal de move est invoquée. Cependant, lorsque la méthode move est appelée sur la référence Dog b, l'implémentation Dog de move est invoquée, démontrant le polymorphisme dynamique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal