0Pricing
PHP Academy · Lektion

Abstrakte Klassen und Methoden

Definieren Sie teilweise implementierte Basisklassen mit dem Schlüsselwort abstract.

Abstrakte Klassen und Methoden ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Einführung: Abstrakte Klassen

Eine abstrakte Klasse kann nicht direkt instanziiert werden – sie dient als Vorlage. Abstrakte Methoden deklarieren eine Signatur ohne Implementierung; Unterklassen müssen diese implementieren.

Wichtige Konzepte

Wichtige Konzepte:

  • Mit abstract class deklarieren
  • Abstrakte Methoden haben keinen Rumpf: abstract public function x();
  • Unterklassen müssen alle abstrakten Methoden implementieren
  • Kann sowohl abstrakte als auch konkrete Methoden enthalten

Definition einer abstrakten Klasse

Beispiel:

<?php
abstract class Animal {
    public function __construct(protected string $name) {}

    // Must be implemented by each subclass
    abstract public function sound(): string;

    // Shared concrete method
    public function introduce(): string {
        return "I am {$this->name} and I say: " . $this->sound();
    }
}

Implementieren abstrakter Methoden

Fortsetzung:

<?php
class Dog extends Animal {
    public function sound(): string { return 'Woof'; }
}

class Cat extends Animal {
    public function sound(): string { return 'Meow'; }
}

$animals = [new Dog('Rex'), new Cat('Whiskers')];
foreach ($animals as $a) {
    echo $a->introduce() . PHP_EOL;
}
// I am Rex and I say: Woof
// I am Whiskers and I say: Meow

Template-Method-Muster

Weitere Vertiefung:

<?php
abstract class DataProcessor {
    // Template method: defines the algorithm skeleton
    final public function process(array $data): array {
        $data = $this->validate($data);
        $data = $this->transform($data);
        return $this->format($data);
    }

    abstract protected function validate(array $data): array;
    abstract protected function transform(array $data): array;

    protected function format(array $data): array { return $data; }
}

Abstrakte Klasse oder Interface

Praktische Anwendung:

<?php
// Use abstract class when:
// - Subclasses share implementation code
// - You need constructor logic or state

// Use interface when:
// - Defining a contract (no implementation needed)
// - Multiple inheritance of type is needed

// A class can only extend ONE abstract class
// but can implement MULTIPLE interfaces

Teilimplementierung

Fortgeschrittenes Thema:

<?php
abstract class Repository {
    // Concrete method available to all subclasses
    protected function findById(int $id, string $table): array {
        $stmt = $this->getDb()->prepare("SELECT * FROM $table WHERE id = ?");
        $stmt->execute([$id]);
        return $stmt->fetch(PDO::FETCH_ASSOC) ?: [];
    }

    abstract protected function getDb(): PDO;
    abstract public function find(int $id): array;
}

Muster

Gängige Muster für abstrakte Klassen helfen dabei, wiederkehrende Entwurfsprobleme sauber zu lösen. Wenden Sie sie konsequent an, damit Ihr Code lesbar und wartbar bleibt.

Wann Sie es verwenden sollten

Zu wissen, wann Sie abstrakte Klassen einsetzen sollten, ist ebenso wichtig wie zu wissen, wie sie funktionieren. Übermäßiger Einsatz führt zu Komplexität, zu geringer Einsatz zu Duplikation.

Praxisbeispiel

In realen Anwendungen finden sich abstrakte Klassen häufig in Frameworks, ORMs und Service-Schichten. Wenn Sie sie verstehen, sind Sie gut darauf vorbereitet, an professionellen PHP-Projekten mitzuwirken.

Häufige Fehler

Vermeiden Sie diese Fehler bei abstrakten Klassen:

  • Abstrakte Klassen können nicht mit new instanziiert werden
  • Alle abstrakten Methoden müssen in konkreten Unterklassen implementiert werden
  • Verwenden Sie das Template-Method-Muster, um Grundgerüste für Algorithmen zu definieren
  • Abstrakte Klassen können Konstruktoren, Eigenschaften und konkrete Methoden enthalten

Schnelltest

Kann eine abstrakte Klasse direkt mit „new“ instanziiert werden?

Zusammenfassung: Abstrakte Klassen

Zusammenfassung:

  • Abstrakte Klassen können nicht mit new instanziiert werden
  • Alle abstrakten Methoden müssen in konkreten Unterklassen implementiert werden
  • Verwenden Sie das Template-Method-Muster, um Grundgerüste für Algorithmen zu definieren
  • Abstrakte Klassen können Konstruktoren, Eigenschaften und konkrete Methoden enthalten

Häufig gestellte Fragen

Ist die Lektion „Abstrakte Klassen und Methoden“ kostenlos?

Ja — der vollständige Text von „Abstrakte Klassen und Methoden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Abstrakte Klassen und Methoden“?

Definieren Sie teilweise implementierte Basisklassen mit dem Schlüsselwort abstract. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Abstrakte Klassen und Methoden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Klassen durch Vererbung erweitern
  2. Abstrakte Klassen und Methoden
  3. Interfaces implementieren
  4. Traits zur Wiederverwendung von Code
← Zurück zu PHP Academy