PHP 5.4 & MySQL 5.6 Grundkurs

Vererbung und Überschreibung steuern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
PHP bietet verschiedene Möglichkeiten, die Vererbung und Überschreibung genauer zu steuern. Dafür sollten Sie wissen, was es mit den Schlüsselwörtern "final", "abstract" und "interface" auf sich hat.

Transkript

Die Vererbung steuern Sie genauer mit final und abstract. Außen gibt es die Möglichkeit, über Interface es zu definieren, welche Methoden eine Klasse zur Verfügung stellen muss. Wenn Sie in eine Klasse Methoden implementiert haben, die für den allgemeinen Ablauf sehr wichtig sind, können Sie mit final verhindern, dass diese in der abgeleiteten Klasse überschrieben werden. So könnten wir beispielsweise sagen, in der Kunden-Klasse ist die Methode speichern hier und speicherFreigeben so wichtig, dass sie in der abgeleiteten Klasse nicht überschrieben werden sollen. Und dafür schreiben wir final ganz am Anfang. Das heißt, noch vor dem Zugriffsmodifizierer. In der abgeleiteten Klasse, hier haben wir einen Premiumkunden, der abgeleitet ist, können wir dann diese Methode nicht überschreiben. Also, das hier würde nicht funktionieren. Ich tue einmal den Kommentar raus, und speichere das. Und das wird jetzt dann gleich hier eine Fehlermeldung generieren. Und die Fehlermeldung sagt dann auch genau das, was nicht möglich ist, also eine finale Methode kann nicht überschrieben werden. Ich ergänze jetzt wieder hier die Kommentare. Damit das Beispiel wieder lauffähig ist. Gerade ging es darum, welche Wirkung final bei einer Methode hat. Sie können final auch bei einer Klasse einsetzen. Dann sorgen Sie damit dafür, dass die Klasse an sich nicht abgeleitet werden kann. Also, das hier ist jetzt eine Klasse, die ist final deklariert. Wenn ich jetzt versuche, die abzuleiten, dann würde das eine Fehlermeldung generieren. Auch das Schlüsselwort abstract ist wichtig. Es macht aber genau das Gegenteil von final. Eine Methode, die als abstract deklariert wird, muss in einer abgeleiteten Klasse überschrieben werden. Dabei sind zwei Punkte wichtig. Wenn eine Klasse auch nur eine als abstract deklarierte Methode erhält, können Sie von dieser Klasse nicht direkt ein Objekt erzeugen, sondern müssen erst eine Klasse ableiten, in der Sie die Methode implementieren. Außerdem muss die gesamte Klasse als abstract definiert werden, wenn Sie auch nur eine abstrakte Methode enthält. Sie sehen hier eine abstrakte Methode in der Klasse, und die ganze Klasse hat hier diesen Modifizierer. Abstrakte Methoden erhalten das Schlüsselwort abstract und nur den Namen ganz ohne Funktionsrumpf hier. Sie sehen, da ist ja gar nicht angegeben, was es tun soll. Dann wird hier jetzt eine neue Klasse erstellt, die von GanzAbstrakt abgeleitet ist. Und die implementiert dann die Methode begruessen. Dann können Sie das aufrufen und das funktioniert. Was Sie aber nicht machen können, ist, dass Sie direkt ein Objekt der abstrakten Klasse erstellen. Das funktioniert nicht. Aber schauen wir mal an, dass das erste hier funktioniert, dass ich von der abgeleiteten Klasse ein Objekt erstelle. Rufe ich das hier einmal auf. Und Sie sehen, das funktioniert. Sie haben gerade gesehen, dass man von abstrakten Klassen nicht direkt Objekte erstellen kann. Das gilt ebenso für die nun vorgestellten Schnittstellen, also Interfaces, zu den wir jetzt kommen. Diese gehen jedoch noch einen Schritt weiter als abstrakte Klassen. In Schnittstellen definieren Sie, welche Methoden zu implementieren sind, ohne jedoch vorzugeben wie. Nützlich sind Schnittstellen, um die Funktionalität von mehreren Klassen zusammenzufassen. Eine Schnittstelle erstellen Sie mit dem Schlüsselwort interface, also nicht class, sondern interface. Und alle Methoden, Eigenschaften und Konstanten von Schnittstellen müssen public sein. Wenn Sie dann so eine Schnittstelle anwenden, dann schreiben Sie nicht extends, was Sie bei abgeleiteten Klassen machen, sondern implements. Wichtig ist dann, wenn Sie so eine Schnittstelle implementieren, dass Sie wirklich alle Methoden definieren. Sonst erhalten Sie eine Fehlermeldung. Schauen wir auch mal dieses Ergebnis an. Das gibt einfach hier nur diese Meldungen aus, die hier definiert sind, also hier ist die Schnittstelle, wo einfach nur darsteht, welche Methoden es geben muss. Und die werden hier implementiert, das heißt, es werden hier immer nur per echo irgendwelche Meldungen ausgegeben. Und da sehen Sie, dass das alles funktioniert. Es gibt also mehrere Möglichkeiten, Überschreibung und Vererbung zu steuern. Final bedeutet keine Überschreibung möglich. Abstract hingegen fordert die Überschreibung in einer abgeleiteten Klasse. Und interfaces sind Schnittstellen. Darüber definieren Sie, welche Methoden zu implementieren sind, ohne vorzugeben, wie.

PHP 5.4 & MySQL 5.6 Grundkurs

Steigen Sie auch ohne Vorwissen in die Programmierung PHP- & MySQL-basierter Webseiten ein und lernen Sie die Sprachgrundlagen wie Bedingungen, Schleifen, Funktionen usw. kennen.

7 Std. 9 min (86 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!