Vous êtes ici :
Accueil Cours Programmations La Programmation Orientée Objet en Java Héritage

La Programmation Orientée Objet en Java : Héritage

L'héritage peut être défini comme le processus dans lequel un objet acquiert les propriétés d'un autre. Avec l'utilisation de l'héritage, l'information est rendue gérable dans un ordre hiérarchique.

Lorsque nous parlons d'héritage, le mot-clé le plus couramment utilisé serait extends et implements. Ces mots détermineraient si un objet IS-A est un autre type. En utilisant ces mots-clés, nous pouvons faire en sorte qu'un objet acquiert les propriétés d'un autre objet.

La relation IS-A

IS-A est une façon de dire: Cet objet est un type de cet objet. Voyons comment le mot clé extends est utilisé pour obtenir l'héritage.

public class Animal{
}

public class Mammal extends Animal{

}

public class Reptile extends Animal{

}

public class Dog extends Mammal{

}

Maintenant, en fonction de l'exemple ci-dessus, dans les termes orientés objet, ce qui suit est vrai:

  • L'animal est la superclasse de la classe des mammifères.
  • L'animal est la superclasse de la classe Reptile.
  • Les mammifères et les reptiles sont des sous-classes de classe animale.
  • Le chien est la sous-classe des classes de mammifères et d'animaux.

Maintenant, si l'on considère la relation IS-A, on peut dire:

  • Mammifère IS-A Animal
  • Reptile IS-A Animal
  • Chien IS-A Mammal
  • Par conséquent: Dog IS-A Animal aussi

Avec l'utilisation du mot clé extends, les sous-classes pourront hériter toutes les propriétés de la superclasse, à l'exception des propriétés privées de la superclasse.

Nous pouvons assurer que Mammal est en fait un Animal avec l'utilisation de l'opérateur d'instance.

Exemple:

public class Dog extends Mammal{
   public static void main(String args[]){
      Animal a = new Animal();
      Mammal m = new Mammal();
      Dog d = new Dog();
      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

 Cela produirait le résultat suivant:

true

true

true

 Puisque nous avons une bonne compréhension du mot  clé extends, nous allons examiner comment le mot-clé implements  est utilisé pour obtenir la relation IS-A.

Le mot-clé implements est utilisé par les classes par héritage des interfaces. Les interfaces ne peuvent jamais être heritées par les classes.

Exemple:

public interface Animal {}

public class Mammal implements Animal{
}

public class Dog extends Mammal{
}

Le mot clé instanceof 

Permettez-nous d'utiliser l’opérateur instanceof  pour vérifier si mammifère est réellement un animal, et le chien est en réalité un animal

interface Animal{}

class Mammal implements Animal{}

public class Dog extends Mammal{
   public static void main(String args[]){
      Mammal m = new Mammal();
      Dog d = new Dog();
      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

 Cela produirait le résultat suivant:

true

true

true

La relation HAS-A

Cette relation repose principalement sur l'utilisation. Cela détermine si une certaine classe HAS-A certaine chose. Cette relation permet de réduire les doublons de code ainsi que les bugs.

Permettez- nous d'examiner un exemple:

public class Vehicule{}
public class Speed{}
public class Van extends Vehicule{
   private Speed sp;
}

 Cela montre que la classe Van HAS-A Speed. En ayant une classe distincte pour Speed, nous ne devons pas mettre le code entier qui appartient à la vitesse dans la classe Van. Cela permet de réutiliser la classe Speed ??dans plusieurs applications.

En fonction orientée objet, les utilisateurs n'ont pas besoin de se soucier de l'objet qui fait le véritable travail. Pour ce faire, la classe Van cache les détails d'implémentation des utilisateurs de la classe Van.Donc, fondamentalement, ce qui se passe, c'est que les utilisateurs demandent à la classe Van de faire une certaine action et la classe Van va soit faire le travail seul, soit demander à une autre classe d'effectuer l'action.

Un fait très important à retenir est que Java ne supporte qu'un seul héritage. Cela signifie qu'une classe ne peut pas étendre plus d'une classe. Par conséquent, la suite est illégale:

public class extends Animal, Mammal{}

Cependant, une classe peut implémenter une ou plusieurs interfaces. Cela a fait de se débarrasser de l'impossibilité d'un héritage multiple.




Vous êtes ici :
Accueil Cours Programmations La Programmation Orientée Objet en Java Héritage