IS a vs HAS a en Java

Rupam Yadav 12 octobre 2023
  1. Relation IS-A en Java
  2. Relation HAS-A en Java
  3. Principales différences entre la relation IS-A et la relation HAS-A
IS a vs HAS a en Java

L’une des principales caractéristiques de l’utilisation d’un langage de programmation orienté objet est que nous pouvons réutiliser un code plusieurs fois. Généralement, nous pouvons utiliser deux concepts, l’héritage et la composition, pour obtenir la réutilisabilité.

L’héritage est une relation IS-A et la composition est une relation HAS-A. Les deux concepts diffèrent d’une certaine manière mais ont le même objectif, la réutilisabilité.

Voyons ci-dessous la différence entre ces deux concepts.

Relation IS-A en Java

Un héritage ou la relation IS-A en Java fait référence à la relation de deux ou plusieurs classes. L’héritage peut être obtenu en utilisant le mot-clé extends en Java. Nous pouvons hériter d’une classe parente pour utiliser ses méthodes et variables dans une classe enfant.

Dans l’exemple de code ci-dessous, nous avons deux classes, Animal et Dog, la classe Animal a une fonction whatAmI() qui renvoie une chaîne, tandis que la classe Dog étend la classe Animal qui est un concept d’Héritage.

Ce Dog est une relation Animal. La classe Dog peut désormais accéder à la méthode whatAmI() depuis sa classe parente.

class Animal {
  public String whatAmI() {
    return "I belong to Animal class";
  }
}

class Dog extends Animal {
  public void aboutMe() {
    System.out.println("I am a Dog class and " + whatAmI());
  }
}

Production :

I am a Dog class and I belong to Animal class

Relation HAS-A en Java

Contrairement à l’héritage, la composition ou la relation HAS-A n’utilise aucun mot-clé comme extends. Nous créons un objet de la classe parente ou de la classe que nous souhaitons utiliser dans cette méthode.

Dans l’exemple suivant, encore une fois, nous avons deux classes, Legs et Dog.

Legs a une méthode howManyLegs(). Dans la classe Dog, nous créons un objet de la classe Legs et utilisons cet objet pour appeler la fonction howManyLegs().

Maintenant, nous pouvons voir ici que le concept de Composition est appliqué, Dog HAS-A Legs ou Dog classe HAS-A propriété de Legs.

class Legs {
  public String howManyLegs() {
    return "I have four legs";
  }
}

class Dog {
  Legs legs = new Legs();

  public void aboutMe() {
    System.out.println("I am a Dog class and " + legs.howManyLegs());
  }
}

Production :

I am a Dog class and I have four legs

Principales différences entre la relation IS-A et la relation HAS-A

IS-A HAS-A
C’est un concept d’héritage C’est un concept de Composition
Une classe ne peut pas étendre plus d’une classe. Une classe peut avoir une relation HAS-A avec plusieurs autres classes
Une classe finale ne peut pas être prolongée en héritage On peut réutiliser les cours finaux en Composition
L’héritage est une liaison statique et ne peut pas être modifié au moment de l’exécution La composition est une liaison dynamique et est flexible pour les changements
Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn