IS a vs HAS a in Java

Rupam Yadav 12 Oktober 2023
  1. IS-A-Beziehung in Java
  2. HAS-A-Beziehung in Java
  3. Hauptunterschiede zwischen IS-A-Beziehung und HAS-A-Beziehung
IS a vs HAS a in Java

Eines der Hauptmerkmale bei der Verwendung einer objektorientierten Programmiersprache besteht darin, dass wir einen Code mehrmals wiederverwenden können. Im Allgemeinen können wir zwei Konzepte verwenden, Vererbung und Zusammensetzung, um Wiederverwendbarkeit zu erreichen.

Vererbung ist eine IS-A-Beziehung und Komposition ist eine HAS-A-Beziehung. Beide Konzepte unterscheiden sich in gewisser Weise, haben aber das gleiche Ziel, die Wiederverwendbarkeit.

Lassen Sie uns den Unterschied zwischen diesen beiden Konzepten unten sehen.

IS-A-Beziehung in Java

Eine Vererbung oder die IS-A-Beziehung in Java bezieht sich auf die Beziehung von zwei oder mehr Klassen. Die Vererbung kann durch die Verwendung des Schlüsselworts extends in Java erreicht werden. Wir können eine Elternklasse erben, um ihre Methoden und Variablen in einer Kindklasse zu verwenden.

Im folgenden Beispielcode haben wir zwei Klassen, Animal und Dog, die Klasse Animal hat eine Funktion whatAmI(), die einen String zurückgibt, während die Klasse Dog die Klasse Animal erweitert das ist ein Konzept der Vererbung.

Dieser Dog ist eine Tier-Beziehung. Die Klasse Dog kann nun von ihrer Elternklasse auf die Methode whatAmI() zugreifen.

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());
  }
}

Ausgabe:

I am a Dog class and I belong to Animal class

HAS-A-Beziehung in Java

Im Gegensatz zur Vererbung verwendet die Komposition oder die HAS-A-Beziehung kein Schlüsselwort wie extends. Wir erstellen ein Objekt der Elternklasse oder einer anderen Klasse, die wir in dieser Methode verwenden möchten.

Im folgenden Beispiel haben wir wiederum zwei Klassen, Legs und Dog.

Legs hat eine Methode howManyLegs(). In der Dog-Klasse erstellen wir ein Objekt der Legs-Klasse und verwenden dieses Objekt, um die howManyLegs()-Funktion aufzurufen.

Hier sehen wir nun, dass das Kompositionskonzept angewendet wird, Dog HAS-A Legs oder Dog Klasse HAS-A Eigenschaft von Beine.

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());
  }
}

Ausgabe:

I am a Dog class and I have four legs

Hauptunterschiede zwischen IS-A-Beziehung und HAS-A-Beziehung

IS-A HAS-A
Es ist ein Konzept der Vererbung Es ist ein Konzept der Komposition
Eine Klasse kann nicht mehr als eine Klasse erweitern. Eine Klasse kann eine HAS-A-Beziehung mit mehreren anderen Klassen haben
Eine letzte Klasse kann in Vererbung nicht erweitert werden Wir können letzte Klassen in Komposition wiederverwenden
Die Vererbung ist eine statische Bindung und kann zur Laufzeit nicht geändert werden Die Komposition ist dynamisch bindend und flexibel für Änderungen
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