2016-04-12 10 views
0

Ich habe versucht, eine PDO-Erweiterung zu erstellen, und ich wollte spezielle Klassen in verschiedenen Dateien haben, aber ich wollte sie alle Link zu der gleichen ursprünglichen Klasse haben.Wie funktioniert Extends in Klassen?

Ich habe mit einigen Frameworks gearbeitet, und ich sehe, dass sie das Schlüsselwort extends class verwenden, und ich dachte, dass es die Klasse hinzugefügt hat, die Sie zum class machen, den Sie gegeben haben.

Einige Code, den ich versucht habe, ist:

class PSMQuery extends PSM { 

    // Functions and Jargon 

} 

Ich habe versucht, ein Objekt für die ursprüngliche PSM Klasse machen:

$psm = new PSM(/*Information*/); 

Aber wenn ich die $psm Variable wie $psm->functionInTheExtendedClass es mit einem aufkommt nennen Fehler zu sagen, dass es eine undefinierte Methode war, als ich es anrief.

Ich verwende das Schlüsselwort extends falsch?

+0

Anders herum. Wenn Klasse A erweitert B ist, können Sie auf Klasse B zugreifen und sie in Klasse A verwenden, nicht umgekehrt. – Rizier123

+0

Also, anstatt auf die Hauptklasse, die ich habe, sollte ich die andere Klasse erweitern? @ Rizier123 – Jek

+0

Versucht, dass und es funktioniert, danke :) – Jek

Antwort

1

Verwende ich das Schlüsselwort extends falsch?

Sie verwenden es richtig, aber es funktioniert andersherum.

Wenn PSMQuery von PSM erstreckt, dann können Sie zugreifen und diese Sachen aus PSM in PSMQuery, aber nicht umgekehrt nutzen können.

denke ich, es zu verstehen, ein gutes Beispiel verwenden kann:

class twoRoomApartment extends building { } 

So, jetzt können Sie logisch denken und schon sehen, dass eine Zwei-Zimmer-Wohnung wahrscheinlich von einem Gebäude erstreckt und nicht umgekehrt.

Bedeutet jetzt in Ihrem Code, Sie erstellen nur eine Instanz von PSMQuery.

0

Es ist Vererbung.

Parent: PSM Kind: PSMQuery

Wenn Sie sich Sie übergeordnete Klasse Funktionalität erweitern und untergeordnete Klasse zu schaffen.

Ihre untergeordnete Klasse erbt alle Funktionen der übergeordneten Klasse.

Parent wird keine Kindklassenfunktionalität erhalten.

Wenn Sie also versuchen, ein Objekt der Elternklasse zu erstellen, kennt es die Kindklassenfunktionalität nicht.

Sie müssen ein Objekt der Kindklasse erstellen und dann können Sie auf die Methoden der Elternklasse zugreifen.

Verwandte Themen