Accéder au contenu principal
Documents
Tableaux JavaProgrammation orientée objet en JavaTraitement des fichiers en JavaIntroduction To JavaLes bases du langage JavaMots-clés Java

Java Polymorphism

Le polymorphisme en Java est un concept fondamental de la programmation orientée objet (POO) qui permet aux objets d'être traités comme des instances de leur classe mère. Il facilite la flexibilité et la capacité à définir des méthodes sous de multiples formes. Le polymorphisme est principalement réalisé par la surcharge des méthodes et la surcharge des méthodes.

Utilisation

Le polymorphisme est utilisé pour effectuer une même action de différentes manières. Il permet la mise en œuvre d'une répartition dynamique des méthodes, où la méthode à exécuter est déterminée au moment de l'exécution. Cela permet de mettre en place une base de code plus propre et plus facile à maintenir.

Types de polymorphisme

  1. Polymorphisme à la compilation (surcharge des méthodes): Réalisé en définissant plusieurs méthodes portant le même nom mais avec des paramètres différents au sein de la même classe.
  2. Polymorphisme d'exécution (surcharge de méthode): Obtenu lorsqu'une sous-classe fournit une implémentation spécifique d'une méthode déjà définie dans sa superclasse.

Exemples

Exemple 1 : Surcharge des méthodes


public class OverloadingExample {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }

    public static void main(String[] args) {
        OverloadingExample obj = new OverloadingExample();
        System.out.println("Sum of integers: " + obj.add(5, 10));
        System.out.println("Sum of doubles: " + obj.add(5.5, 10.5));
    }
}
    

Dans cet exemple, la méthode add est surchargée avec deux listes de paramètres différentes. La méthode appropriée est appelée en fonction des arguments transmis.

Exemple 2 : Remplacement des méthodes


class Animal {
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

public class OverridingExample {
    public static void main(String[] args) {
        Animal myAnimal = new Dog();
        myAnimal.sound(); // Outputs "Dog barks"
    }
}
    

Ici, la classe Dog remplace la méthode sound de la classe Animal. La méthode sound de la classe Dog est invoquée au moment de l'exécution.

Conseils et bonnes pratiques

  • Utilisez judicieusement la surcharge des méthodes: Veillez à ce que les méthodes surchargées exécutent des fonctions similaires afin d'éviter toute confusion.
  • Ignorez les méthodes de manière appropriée: Utilisez l'annotation @Override pour indiquer qu'une méthode est destinée à remplacer une méthode d'une superclasse, ce qui permet d'éviter les erreurs.
  • Tirez parti du polymorphisme pour plus de flexibilité: Utilisez le polymorphisme pour écrire un code plus générique et réutilisable.
  • Comprendre la résolution de la méthode: Sachez que la résolution des méthodes surchargées se fait au moment de l'exécution, alors que pour les méthodes surchargées, elle se fait au moment de la compilation.
  • Utilisez des interfaces et des classes abstraites: Utilisez des interfaces et des classes abstraites pour définir des comportements communs qui peuvent être mis en œuvre de manière polymorphe dans différentes classes.

Apprendre l'essentiel de Java

Développez vos compétences en Java à partir de la base et maîtrisez les concepts de programmation.
Commencez à apprendre gratuitement