PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Allgemeine Frage zu OOP unter PHP


Unreal
09.11.2005, 20:15:17
Hallo Community,

Wenn ich innerhalb einer Klasse Attribute/Prozeduren mit den Keywords public/protected/private definiere, dann sieht die Zugriffsregelung doch so aus:


private: Attribut/Prozedur steht nur innerhalb dieser Klasse zur Verfügung.
protected: Attribut/Prozedur steht innerhalb dieser und aller Child-Klassen zur Verfügung.
public: Attribut/Prozedur steht global in allen Super-Klassen, in allen Child-Klassen und in der eigenen Klasse zur Verfügung.


Liege ich da richtig?


Gruß Unreal

feuervogel
09.11.2005, 20:16:42
ja.

Unreal
09.11.2005, 20:41:34
Cool ich bin ja ein schlaues Kerlchen :-)

Zwei Fragen habe ich aber noch:


Wie funktioniert Abkappselung?
Wie funktioniert Vererbung?

Danke Schon mal!

Gruß Unreal

Usul
09.11.2005, 22:10:36
Kurzes googeln nach "PHP" und "Klassen" liefert mir: http://php3.de/manual/de/ref.classobj.php

Aber es gibt da noch unzaehlige mehr Seiten, leicht zu finden, im Internet.

Unreal
10.11.2005, 17:21:24
Das hatte ich mir ja auch schon angesehen, aber ich verstehe das nicht recht, daher dachte ich mir, vielleicht könnte man mir das ganze hier noch einmal verständlicher erklären...

feuervogel
10.11.2005, 20:57:36
abkapselung kenne ich nicht, vielleicht unter einem anderen begriff.

wenn du eine klasse vererbst, demonstrier ich das am besten mal an nem bsp:


<?php
class A {

private $a = "a";
public $b = "b";

private function foo() {

return $a;

}

public function bar() {

return $b;

}

}

class B extends A {

public function changeb() {

$this->b = "c";

}

}

// nun mache man folgendes:

$B = new B();

echo $B->foo(); //gibt nen fehler aus
echo $B->bar();
$B->changeb();
echo $B->bar();



?>


wenn klasse B von klasse A erbt, werden alle nicht-privaten in A deklarierten und definierten methoden und variablen von B übernommen.

was nicht geht ist:

class C extends A,B {}

aber das geht:

class B extends A {}

class C extends B {}

class D extends C {}

Unreal
11.11.2005, 00:23:35
Hallo feuervogel!

Danke erst mal für deine Hilfe, habe das mir der Vererbung nun auch begriffen.

Zum Thema Abkappselung:

So nennt man wohl die Zugriffssteuerung mit public/private/protected. Das heißt:


public: Attribut/Methode ist gegenüber anderen Klassen nicht abgekappselt.
private: Attribut/Methode ist gegenüber anderen Klassen komplett abgekappselt.
protected: Attribut/Methode ist nicht für Child-Klassen abgekappselt.


Ich lege dafür jetzt aber nicht meine Hand ins Feuer, kann gut sein, dass ich da was missverstanden habe!

Also Danke noch mal!!


Gruß Unreal

feuervogel
11.11.2005, 01:44:25
das ist das was du im 1. post zugriffsregelung nennst, ich sag dazu im allgemeinen "sichtbarkeit"

Unreal
11.11.2005, 02:12:47
Hauptsache wir verstehen uns jetzt :-)