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

Maîtriser l'héritage Java : Sous-classes, Superclasses et Principes fondamentaux

L'héritage est le processus par lequel une classe acquiert les propriétés (méthodes et champs) d'une autre. Il organise l'information de manière hiérarchique.

Mot-clé extends


class Super {
    // ...
}
class Sous extends Super {
    // ...
}

Exemple concret


class Calcul {
    int z;
    public void addition(int x, int y) {
        z = x + y;
        System.out.println("Somme : " + z);
    }
    public void soustraction(int x, int y) {
        z = x - y;
        System.out.println("Différence : " + z);
    }
}

public class MonCalcul extends Calcul {
    public void multiplication(int x, int y) {
        z = x * y;
        System.out.println("Produit : " + z);
    }
    
    public static void main(String args[]) {
        int a = 20, b = 10;
        MonCalcul demo = new MonCalcul();
        demo.addition(a, b);
        demo.soustraction(a, b);
        demo.multiplication(a, b);
    }
}

Résultat :


Somme : 30
Différence : 10
Produit : 200

Lorsqu'un objet MonCalcul est créé, une copie des membres de Calcul est incluse. L'objet sous-classe accède aux membres des deux classes.

Référence superclasse vs sous-classe


Calcul demo = new MonCalcul();
demo.addition(a, b);      // OK - méthode de Calcul
demo.soustraction(a, b);  // OK - méthode de Calcul
// demo.multiplication(a, b);  // ERREUR - méthode de MonCalcul inaccessible

Une référence de type superclasse ne voit que les membres de la superclasse. Pour accéder à tout, utilisez une référence de type sous-classe.

Note : Les constructeurs ne sont pas hérités, mais le constructeur de la superclasse peut être invoqué depuis la sous-classe.

Le mot-clé super

Similaire à this, utilisé pour :

Différencier les membres


super.variable
super.methode();

Exemple complet


class SuperClasse {
    int num = 20;
    public void afficher() {
        System.out.println("Affichage superclasse");
    }
}

public class SousClasse extends SuperClasse {
    int num = 10;
    public void afficher() {
        System.out.println("Affichage sous-classe");
    }
    
    public void maMethode() {
        SousClasse sous = new SousClasse();
        sous.afficher();        // méthode sous-classe
        super.afficher();       // méthode superclasse
        System.out.println("num sous-classe : " + sous.num);
        System.out.println("num superclasse : " + super.num);
    }
    
    public static void main(String args[]) {
        new SousClasse().maMethode();
    }
}

Résultat :


Affichage sous-classe
Affichage superclasse
num sous-classe : 10
num superclasse : 20

Invoquer le constructeur de la superclasse


super(valeurs);

Exemple : constructeur paramétré


class SuperClasse {
    int age;
    SuperClasse(int age) { this.age = age; }
    public void getAge() {
        System.out.println("Age dans superclasse : " + age);
    }
}

public class SousClasse extends SuperClasse {
    SousClasse(int age) { super(age); }
    
    public static void main(String args[]) {
        SousClasse s = new SousClasse(24);
        s.getAge();
    }
}

Résultat : Age dans superclasse : 24

Relation IS-A

"Cet objet est un type de cet autre objet". Le mot-clé extends réalise l'héritage.


public class Animal { }
public class Mammifere extends Animal { }
public class Reptile extends Animal { }
public class Chien extends Mammifere { }

Vérités :

Relations IS-A :

L'opérateur instanceof vérifie cette relation :


Animal a = new Animal();
Mammifere m = new Mammifere();
Chien d = new Chien();
System.out.println(m instanceof Animal);  // true
System.out.println(d instanceof Mammifere); // true
System.out.println(d instanceof Animal);   // true

Mot-clé implements

Utilisé pour implémenter une interface (une classe ne peut pas étendre une interface).


public interface Animal { }
public class Mammifere implements Animal { }
public class Chien extends Mammifere { }

Relation HAS-A

Basée sur la composition : une classe possède une instance d'une autre. Réduit la duplication et les bugs.


public class Vehicule { }
public class Vitesse { }
public class Camionnette extends Vehicule {
    private Vitesse v;  // Camionnette A-UNE Vitesse
}

La classe Vitesse est réutilisable. Camionnette cache les détails d'implémentation (encapsulation).

Types d'héritage

Important : Java ne supporte pas l'héritage multiple de classes :


// ILLÉGAL
public class Test extends Animal, Mammifere { }

Mais une classe peut implémenter plusieurs interfaces, ce qui contourne cette limitation.

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  4. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  5. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  6. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  7. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  8. Maîtriser les génériques Java : Construire du code réutilisable et type-safe
  9. Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression