Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Comprendre le polymorphisme en Java : Concepts et Utilisation pratique

Le polymorphisme est la capacité d'un objet à prendre plusieurs formes. En POO, l'usage le plus courant est quand une référence de classe parente pointe vers un objet de classe fille.

Tout objet Java passant plus d'un test IS-A est polymorphe. En Java, tous les objets sont polymorphes car tout objet passe le test IS-A pour son propre type et pour Object.

Points clés :

Exemple : Polymorphisme avec interfaces


public interface Vegetarien {}
public class Animal {}
public class Cerf extends Animal implements Vegetarien {}

Cerf est polymorphe (héritage multiple via interface) :

Déclarations légales :


Cerf d = new Cerf();
Animal a = d;
Vegetarien v = d;
Object o = d;

Toutes les références d, a, v, o pointent vers le même objet dans le tas (heap).

Méthodes virtuelles

Le comportement des méthodes redéfinies permet le polymorphisme lors de la conception.

Une méthode redéfinie est masquée dans la classe parente et n'est invoquée que si la classe fille utilise super.

Exemple : Employee et Salary


/* Employee.java */
public class Employee {
    private String name;
    private String address;
    private int number;
    
    public Employee(String name, String address, int number) {
        System.out.println("Construction Employee");
        this.name = name;
        this.address = address;
        this.number = number;
    }
    
    public void mailCheck() {
        System.out.println("Envoi chèque à " + name + " " + address);
    }
    // getters/setters...
}

/* Salary.java */
public class Salary extends Employee {
    private double salary;
    
    public Salary(String name, String address, int number, double salary) {
        super(name, address, number);
        setSalary(salary);
    }
    
    @Override
    public void mailCheck() {
        System.out.println("Dans mailCheck de Salary");
        System.out.println("Envoi chèque à " + getName() + " avec salaire " + salary);
    }
    
    public double computePay() {
        System.out.println("Calcul paie pour " + getName());
        return salary / 52;
    }
    // getters/setters...
}

Démonstration du polymorphisme


/* VirtualDemo.java */
public class VirtualDemo {
    public static void main(String[] args) {
        Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00);
        Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00);
        
        System.out.println("Appel mailCheck via référence Salary --");
        s.mailCheck();
        
        System.out.println("\nAppel mailCheck via référence Employee --");
        e.mailCheck();
    }
}

Résultat :


Construction Employee
Construction Employee
Appel mailCheck via référence Salary --
Dans mailCheck de Salary
Envoi chèque à Mohd Mohtashim avec salaire 3600.0

Appel mailCheck via référence Employee --
Dans mailCheck de Salary
Envoi chèque à John Adams avec salaire 2400.0

Analyse

Ce comportement est l'invocation de méthode virtuelle. Une méthode redéfinie est invoquée à l'exécution selon le type réel de l'objet, pas le type de la référence utilisée à la compilation.

C'est la liaison dynamique (late binding) qui rend le polymorphisme possible en Java.

Java

  1. Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
  2. Commentaires Java : Types, utilisation et bonnes pratiques
  3. Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
  4. Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
  5. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  6. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  7. Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
  8. Annotations Java expliquées : types, placement et exemples pratiques
  9. Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code