dedlfix: OOP Vererbung von Methoden

Beitrag lesen

echo $begrüßung;

Kann man Methoden einer Elternklasse 'public' machen und gleichzeitig sie vor der Vererbung an eine Kindklasse bewahren?

Es gibt das Schlüsselwort final. Damit kann man Methoden vor dem Überschreiben schützen. (Auch Klassen vor dem Vererben, aber das brauchst du ja grad nicht.) Wie aber immer bei PHP sind solche und ähnliche einschränkende Features nur als Hinweis zu verstehen, denn wenn es dem anwendenden Programmierer nicht passt, kann er ja einfach den Quelltext ändern.

$objb=new b();
$objb->funca(); // DAS soll NICHT möglich sein. Aber wie?

Vor dem Aufrufen schützt das final nicht. Auch ein Zurückstufen der Sichtbarkeit ist nicht möglich. Wenn es wirklich wichtig ist, dass man diese Funktion nicht aus b-Objekten aus aufrufen darf, dann überschreib die Methode und wirf eine Exception. Oder ändere deine Vererbungshierarchie, so dass nicht b von a erbt sondern beide von einer grundlegenden Klasse. a wird dann erweitert um funca, b jedoch nicht.

echo "$verabschiedung $name";