Sichtbarkeit

Im Beispiel der BallKlasse wurde allen Eigenschaften oder Methoden ein public vorangestellt, das bedeutet, inwieweit man auf Eigenschaften oder Methoden einer Klasse zugreifen und sie verändern kann. Generell gibt es 3 Sichtbarkeitsstufen:

  • public: kompletter Vollzugriff
  • protected: Hier können nur die eigene Klasse und die abgeleiteten Klassen darauf zugreifen.
  • private: Hier kann nur innerhalb der Klasse darauf zugriffen werden.
class BallKlasse {
	public $farbe;
	public $groesse;
	protected $preis;
	
	public function anmalen($farbe) {
		$this->farbe = $farbe;
	}
	
	public function aufpumpen($luftmenge) {
		$this->groesse = $luftmenge;
	}
	
	public function beschreibe () {
		$beschreibung = "Die Farbe ist ".$this->farbe."\n";
		$beschreibung .= "Die Groesse ist ".$this->groesse."\n";
		return $beschreibung;
	}
	
	protected function preisaendern() {
		$this->preis++;
	}
}

$ball = new BallKlasse();
$ball->anmalen("weiss");
$ball->aufpumpen(1);
echo $ball->beschreibe();
$ball->preisaendern();

Im obigen Beispiel haben wir zu unserer schon bekannten BallKlasse eine protected Methode und Eigenschaft hinzugefügt. Soweit ist das ja schonmal super. Das Problem ist, dass wir in der letzten Zeile auf diese protected Methode zugreifen wollen. Das gibt dann folgende Fehlermeldung:

 

<b>Fatal error</b>:  Call to protected method BallKlasse::preisaendern()

 

Wir können von außen also nicht auf eine private oder protected geschützte Methode oder Eigenschaft zugreifen. Ach, können wir wirklich nicht? Naja, zumindest auf mittels protected geschützte Methoden kann man zugreifen, wie das Beispiel im Punkt "Vererbung" verdeutlicht.