OOP Objektorientierte Programmierung in PHP - Part 7

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • In diesem Tutorial möchte ich die OOP in PHP vorstellen. Ich gehe von PHP Grundkenntnissen und der Kentniss darüber, wie man Funtionen schreibt, aus, alles andere wird erklärt! Im siebten Part werde ich auf das keyword final eingehen.
    Hallo liebe Community!

    Dies ist mein erstes Tutorial also seit nicht zu streng mit der Kritik, über Verbesserungsvorschläge würde ich mich dennoch freuen!

    Ich setze voraus, dass man weiß wie Funktionen geschrieben werden und dass man mit Variablen umgehen kann. Außerdem sollte man folgende Parts meines Tutorials gelesen haben:
    • [wiki]OOP Objektorientierte Programmierung in PHP - Part 1[/wiki]
    • [wiki]OOP Objektorientierte Programmierung in PHP - Part 2[/wiki]
    • [wiki]OOP Objektorientierte Programmierung in PHP - Part 3[/wiki]
    • [wiki]OOP Objektorientierte Programmierung in PHP - Part 4[/wiki]
    • [wiki]OOP Objektorientierte Programmierung in PHP - Part 5[/wiki]
    • [wiki]OOP Objektorientierte Programmierung in PHP - Part 6[/wiki]


    Dieser Part behandelt die Vererbung nochmal genauer.

    Was ist wenn nun mal etwas NICHT von der Kindklasse geändert werden soll?? Das keyword ist final. Eine Methode die mit final definiert wurde kann nicht nach der vererbung überschrieben werden. Man darf also in der Kindklasse keine Methode mit dem gleichen Namen definieren. Es können auch Klassen als final definiert werden, dann darf keine Klasse von dieser Klasse erben. Ich glaube das Beispiel aus dem PHP Manual sagt den Rest:

    Quellcode

    1. <?php
    2. class BaseClass {
    3. public function test() {
    4. echo "BaseClass::test() aufgerufen\n";
    5. }
    6. final public function moreTesting() {
    7. echo "BaseClass::moreTesting() aufgerufen\n";
    8. }
    9. }
    10. class ChildClass extends BaseClass {
    11. public function moreTesting() {
    12. echo "ChildClass::moreTesting() aufgerufen\n";
    13. }
    14. }
    15. // Erzeugt einen fatalen Fehler: Cannot override final method BaseClass::moreTesting()
    16. ?>
    17. <?php
    18. final class BaseClass {
    19. public function test() {
    20. echo "BaseClass::test() aufgerufen\n";
    21. }
    22. // Es macht hier keinen Unterschied, ob die Methode final ist oder nicht
    23. final public function moreTesting() {
    24. echo "BaseClass::moreTesting() aufgerufen\n";
    25. }
    26. }
    27. class ChildClass extends BaseClass {
    28. }
    29. // Erzeugt einen fatalen Fehler: Class ChildClass may not inherit from final class (BaseClass)
    30. ?>
    Alles anzeigen


    Das final keyword wird mit PHP 5 eingeführt und ist voher nicht verfügbar!

    n0x-f0x

    9.576 mal gelesen