Zum Inhalt springen

PHP Basics: Abstrakte Klassen

Gehen wir zunächst darauf ein, was eine abstrakte Klasse überhaubt ist (wenn bekannt kursiv überspringen 😉 ). Wir sind am Strand, es gibt dort Tiere der Klassen Krabbe, Fisch und Seestern. Im Prinzip hätte unsere übergeordnete Klasse Strandtier Eigenschaften und Funktionen, die für alle Klassen gleich wären, soll aber als Objekt niemals erzeugt werden.

Eine abstrakte Klasse ist also eine Klasse, die sich nicht instanzieren lässt (Objekt erzeugen). Es ist also vielmehr ein Strukturelement.

<?php
abstract class AbstractClass
{
    // Die abgeleitete Klasse ist gezwungen, diese beiden Methoden zu definieren
    abstract protected function getValue();

    // Gemeinsame Methode; muss nicht zwingend durch abgeleitete Klasse definiert werden
    public function printOut() {
        print $this->getValue();
    }
}

class MyClass1 extends AbstractClass
{
    protected function getValue() {
        return "Seestern";
    }
}

class MyClass2 extends AbstractClass
{
    public function getValue() {
        return "Krabbe";
    }
}

$class1 = new MyClass1;
$class1->printOut();

echo "\n";

$class2 = new MyClass2;
$class2->printOut();

/* Ausgabe:
Seestern
Krabbe
*/
?>

Bei abstrakten Klassen kann auch die Sichtbarkeit der konkreten Elemente mehr erlauben, allerdings nicht weniger (Bsp.: private zu public geht, public zu private nicht).

Kommentare sind geschlossen, aber Trackbacks und Pingbacks sind möglich.