Maison >Java >javaDidacticiel >Surcharge ou remplacement : quel est le lien entre le polymorphisme et les deux en Java ?

Surcharge ou remplacement : quel est le lien entre le polymorphisme et les deux en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-21 00:38:09676parcourir

Overloading vs. Overriding: How Does Polymorphism Relate to Both in Java?

Comprendre le polymorphisme, le remplacement et la surcharge en Java

Lorsque l'on discute du polymorphisme en Java, il est crucial de faire la différence entre la surcharge et le remplacement. La surcharge implique de définir plusieurs méthodes avec le même nom mais des paramètres différents, tandis que la substitution se produit lorsqu'une sous-classe implémente une méthode de sa superclasse.

En ce qui concerne la question de la classification du polymorphisme comme surcharge ou substitution, aucune des deux n'est tout à fait correcte. Le polymorphisme intègre les deux concepts.

Classes de base abstraites et remplacement

Le polymorphisme est mieux illustré par les classes de base abstraites, qui déclarent des méthodes sans les implémenter. Les sous-classes définissent ensuite ces méthodes spécifiques à leur héritage. Ce processus est considéré comme primordial, car la sous-classe fournit sa propre implémentation pour la méthode héritée.

Par exemple, considérons la classe de base abstraite Human avec une méthode abstraite goPee(), représentant un humain générique allant aux toilettes. Les sous-classes Male et Female remplacent cette méthode par des implémentations spécifiques :

public abstract class Human {
    public abstract void goPee();
}

public class Male extends Human {
    @Override
    public void goPee() {
        System.out.println("Stand Up");
    }
}

public class Female extends Human {
    @Override
    public void goPee() {
        System.out.println("Sit Down");
    }
}

En créant une ArrayList contenant des instances de Human, nous pouvons invoquez la méthode goPee() de manière polymorphe, ce qui entraîne différentes sorties basées sur la sous-classe spécifique :

ArrayList<Human> group = new ArrayList<>();
group.add(new Male());
group.add(new Female());

for (Human person : group) person.goPee();

Cela illustre la polyvalence du polymorphisme en permettant l'utilisation d'une méthode commune à travers différents objets, malgré leurs implémentations spécifiques.

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!

Déclaration:
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