Zum Hauptinhalt springen
Veröffentlicht am

abstract in Java

Teilen:

Einführung

abstract ist ein Modifikator in Java, der hauptsächlich im Kontext der objektorientierten Programmierung verwendet wird. Er spielt eine entscheidende Rolle bei der Entwicklung modularer und flexibler Systeme.

Was ist abstract?

In Java wird abstract verwendet, um anzugeben, dass:

  1. Eine Klasse nicht direkt instanziiert werden kann.
  2. Eine Methode keinen Körper hat und in einer Unterklasse implementiert werden muss.

Warum abstract Klassen und Methoden verwenden?

  1. Um das Design zu betonen: Abstrakte Klassen werden oft verwendet, um eine Vorlage oder ein Design für andere Klassen zu definieren.
  2. Polymorphismus: Es erleichtert den Polymorphismus, da abgeleitete Klassen unterschiedliche Implementierungen der abstrakten Methoden haben können.
  3. Versehentliche Objekterstellung vermeiden: Da abstrakte Klassen nicht instanziiert werden können, verhindern sie die versehentliche Erstellung von Objekten.

Unterschied zwischen abstract und Interface

  • Methoden und Variablen: Während ein Interface nur Methodensignaturen enthalten kann, kann eine abstrakte Klasse sowohl vollständige als auch abstrakte Methoden enthalten.
  • Zustandsvariablen: Abstrakte Klassen können Zustandsvariablen enthalten, Interfaces hingegen nicht.
  • Mehrfachvererbung: Java unterstützt keine Mehrfachvererbung von Klassen, erlaubt aber, dass eine Klasse mehrere Interfaces implementiert.

Veranschaulichung mit Code

Abstrakte Klassen und Methoden werden verwendet, wenn eine gemeinsame Basis benötigt wird, diese Basis aber nicht instanziiert werden soll:

package com.caffeinealgorithm.programaremjava;

import java.util.ArrayList;
import java.util.List;

public class Abstract {
  public void Run() {
    // KlasseX.informationX();
    var objekt = new KlasseY();
    objekt.informationY();

    /*
      Land: Portugal
      Land: Brasilien
      Land: Spanien
      Land: Frankreich
      Land: Italien
      Land: Australien
      Land: Indien
    */
  }
}

abstract class KlasseX {
  public static String gemeinschaft = "Caffeine Algorithm";
  public static List<String> laender = new ArrayList<>();

  public static void informationX() {
    for (char zeichen : gemeinschaft.toCharArray())
      System.out.printf("Zeichen: %c\n", zeichen);
  }

  public abstract void informationY();
}

class KlasseY extends KlasseX {
  public void informationY() {
    laender.add("Portugal");
    laender.add("Brasilien");
    laender.add("Spanien");
    laender.add("Frankreich");
    laender.add("Italien");
    laender.add("Australien");
    laender.add("Indien");

    for (String land : laender)
      System.out.printf("Land: %s\n", land);
  }
}

In diesem Beispiel ist KlasseX abstrakt, was bedeutet, dass sie nicht instanziiert werden kann, aber KlasseY (eine abgeleitete Klasse) schon.

Fazit

Der Modifikator abstract ist ein wertvolles Werkzeug im Arsenal eines Java-Entwicklers. Er fördert solide Designpraktiken und hilft Entwicklern, robustere und wartbarere Systeme zu erstellen.

Happy coding!