Kategorie
ist ein abstraktes Konzept, eine Sammlung von Objekten mit derselben semantischen Definition (ein Kollektiv mit denselben Eigenschaften und Methoden). Die Verwendung bestimmter Klassen ist nicht möglich und kann nur instanziiert werden. Nehmen Sie als Beispiel ein Auto. Die Designzeichnung des Autos ist die Klasse und das Auto ist das Objekt. Der Fokus im Design liegt auf der Erstellung von Klassen
Konzept des Unterrichts im wirklichen Leben
Alles ist ein Objekt. Wenn der spezifische Computer, den wir verwenden, ein Objekt ist, dann ist der Computer eine Klasse. Wenn Sie sagen, dass Sie Ihr Kind abholen möchten, wird es Ihnen auf keinen Fall übergeben (es sei denn, sie kennen Sie und wissen, wer Ihr Kind ist). Ihr Kind ist das konkrete Ziel, und das Kind ist eine Person
Spezifikationen für das Schreiben von Klassennamen
Den ersten Buchstaben des Klassennamens groß schreiben. Eine Klasse wird in einer Datei definiert und endet mit .class.php als Dateiname
____________________________________________________________
Objekt
Objekthandle
Wird zur Unterscheidung verschiedener Objekte verwendet. Nachdem das Objekt erstellt wurde, wird ein Speicherplatz im Speicher abgerufen. Die Adresse des Speicherplatzes ist die Kennung oder das Handle des Objekts
Eigenschaften
In einer Klasse definierte Variablen sind Mitgliedsattribute, die zur Beschreibung der Daten der statischen Eigenschaften des Objekts verwendet werden. Beispielsweise der Name und das Geschlecht einer Person. Der erste Buchstabe ist ein Kleinbuchstabe
Methode
In einer Klasse definierte Funktionen sind Mitgliedsmethoden, die zur Beschreibung des Betriebsverhaltens dynamischer Eigenschaften von Objekten verwendet werden. Bei Methodennamen wird die Groß- und Kleinschreibung nicht beachtet und der erste Buchstabe darf nicht in Kleinbuchstaben geschrieben werden
Objektlebenszyklus
Nach der Erstellung beginnt der Lebenszyklus. Wenn das Programm endet oder der Programmierer das Objekt löscht, wird es automatisch zerstört
Objektlebenszyklus
1 Nachdem die Programmausführung abgeschlossen ist, führt PHP den Recyclingmechanismus aus und löscht die Objekte im Speicher
2 Alle löschen
Nachdem auf das Objekt verwiesen wurde, ist das Objekt Müll und der Recyclingmechanismus löscht den Müll automatisch
Schritte der Objektgenerierung
1 Schaffen Sie Platz für Objekte im Inhalt
2 Führen Sie die Konstruktionsmethode aus
3 Gibt die Referenzadresse des Objekts zurück
Speicherverteilung von Objekten:
1 Die Objektreferenz wird im „Stapelspeicher“ abgelegt (der Stapel speichert feste Inhalte)
2 Das Objekt wird im „Heap-Speicher“ abgelegt (der Heap speichert variablen Inhalt)
3 Statische Mitglieder werden beim ersten Laden im „Datenbereich“ platziert, sodass sie von jedem Objekt im Heap-Speicher gemeinsam genutzt werden können
4 Funktionen und Methoden werden im Codebereich platziert
Objektorientierte Funktionen
Abstraktheit
Abstrahieren Sie die gemeinsamen Attribute und Methoden einer Klasse von Objekten, um eine Klasse zu bilden. Diese Denkweise ist abstrakt
Einkapselung:
Kapseln Sie Mitgliedsmethoden und Mitgliedsattribute in Klassen, verbergen Sie Attribute und Methoden, verbergen Sie Methodenimplementierungsdetails und beschränken Sie die Zugriffsrechte auf Klassenmitglieder durch öffentliche, geschützte, private Endstatik. Daten sind intern geschützt und können nur von autorisierten Mitgliedern abgerufen werden verwendet werden kann. Kapseln Sie die Mitglieder so weit wie möglich
Erben erweitert:
Sie können eine Klasse erben lassen und die Mitgliedseigenschaften und -methoden einer anderen vorhandenen Klasse übernehmen. Die geerbte Klasse wird als übergeordnete Klasse oder Basisklasse bezeichnet, und die geerbte Klasse ist eine Unterklasse. erweitert Schlüsselwort implementiert Vererbungsbeziehung
Polymorphismus:
Die Unterklasse erbt die übergeordnete Klasse und erreicht Polymorphismus durch Überschreiben der Methode der übergeordneten Klasse
____________________________________________________________________________
Zugriffsmodifikator (Bereichsdeskriptor)
öffentlich
Es kann sowohl innerhalb als auch außerhalb der Klasse oder Unterklassen darauf zugegriffen werden, was die offenste Berechtigung ist
privat
Auf die Attribute und Methoden der definierten Klasse kann innerhalb der Klasse zugegriffen werden, jedoch nicht außerhalb der Klasse oder Unterklassen
geschützt
Definieren Sie die Attribute und Methoden der Klasse, auf die innerhalb der Klasse oder Unterklassen zugegriffen werden kann, außerhalb der Klasse jedoch nicht zugänglich ist
Moduldesign
Starke Kohäsion (Funktionen sollten so weit wie möglich innerhalb der Klasse abgeschlossen werden), schwache Kopplung (so wenig Methoden wie möglich für externe Aufrufe öffnen). Beispiel: Das Vertriebsteam des Unternehmens erhält Projekte und die spezifische Arbeit wird den internen Programmierern, Designern und Servermanagern des Unternehmens überlassen, um diese gemeinsam zu erledigen
____________________________________________________________________________
statische statische Eigenschaften und statische Methoden
Ein Datenobjekt muss nur die Klasse bedienen, das heißt, wenn die Klasse intern, aber nicht extern verfügbar ist. Das Erstellen von Objekten ist äußerst ressourcenintensiv. Wenn also eine Methode stark bekannt ist, muss keine Instanz der Klasse neu generiert werden, um diese Methode aufzurufen. Die definierten Methoden oder Variablen liegen beim ersten Laden des Programms im Speicher und werden bei Programmende freigegeben.
Statische Methoden können nicht durch nicht statische Methoden überschrieben werden und Konstruktoren dürfen nicht als statisch deklariert werden
statische Variable:
Durch Static deklarierte Mitgliedsvariablen sind öffentliche Variablen der Klasse. Sie werden generiert, wenn sie zum ersten Mal verwendet werden die Klasse, nicht das Objekt. Statische Variablen gehören zu Klassen und nicht zu Objekten. Auf sie kann von überall aus über die Klasse zugegriffen werden. Sie sind globale Variablen der Klasse und werden beim Erstellen der Klasse gespeichert. Bei mehreren Objekten werden statische Datenelemente nur an einem Ort gespeichert, wodurch Speicherplatz gespart werden kann. Solange der Wert des statischen Datenelements einmal aktualisiert wird, ist garantiert, dass alle Objekte auf denselben aktualisierten Wert zugreifen.
statische Methode:
Mit static deklarierte Methoden sind statische Methoden oder Klassenmethoden. Bei der Ausführung dieser Methode wird die Objektreferenz nicht an die Funktion übergeben, sodass wir nicht auf nicht statische Mitglieder zugreifen können, sondern nur auf statische Methoden oder statische Variablen. Es können nur klassenbezogene Methoden wie self static parent usw. verwendet werden. Es kann ausgeführt werden, ohne dass bei der Verwendung ein Objekt generiert wird
$this
ist ein Verweis auf das aktuelle Objekt. Er erscheint normalerweise in Methoden und wird verwendet, um Mitgliedsattribute der Klasse abzurufen oder Mitgliedsmethoden der Klasse
auszuführen
selbst ::
Referenz auf diese Klasse, die verwendet wird, um die Zustandsmitgliedsattribute oder statischen Mitgliedsmethoden der aktuellen Klasse self::run() abzurufen
Elternteil ::
Referenz auf die übergeordnete Klasse, aufrufende Methoden oder Eigenschaften der übergeordneten Klasse.
_______________________________________________________________________________
Konstruktionsmethode und Zerstörungsmethode
Konstruktionsmethode__construct()
Es wird beim Erstellen eines Objekts automatisch ausgeführt und hat keinen Rückgabewert. Es wird verwendet, um einige Initialisierungsarbeiten der Klasse durchzuführen, z. B. die Initialisierung von Objektattributen. Die Konstruktormethode in PHP4 muss denselben Namen haben wie die Klasse. In PHP5 ist die Konstruktormethode __construct(). Der Vorteil besteht darin, dass sie nicht vom Klassennamen beeinflusst wird. Wenn __construct nicht vorhanden ist, sucht PHP nach einer Methode mit demselben Namen wie die Klasse und führt sie automatisch aus.
Sie können im Konstruktor Parameter übergeben, um Attribute zu definieren. Wenn sowohl die übergeordnete Klasse als auch die Unterklasse Konstruktoren definieren, wird der Konstruktor der Unterklasse ausgeführt
Destruktormethode __destruct():
Eine Methode, die ohne Parameter automatisch ausgeführt wird, wenn ein Objekt im Speicher zerstört wird
_______________________________________________________________________________
Endgültige Objektkonstante
<span class="com">//类里面的方法不能修改</span>
<span class="com">//类不能被继承</span>
<span class="pln"> <span class="kwd">final<span class="pln"> <span class="kwd">class<span class="pln"> souji <span class="pun">{</span></span></span></span></span></span>
<span class="pln"> <span class="kwd">final<span class="pln"> <span class="kwd">public<span class="pln"> $pinpai<span class="pun">;<span class="pln"> <span class="com">//报错</span></span></span></span></span></span></span></span>
<span class="pln"> <span class="kwd">final<span class="pln"> <span class="kwd">function<span class="pln"> congdian<span class="pun">()<span class="pln"> <span class="pun">{<span class="pln"> <span class="com">//无效</span></span></span></span></span></span></span></span></span></span>
<span class="pln"> echo $this<span class="pun">-><span class="pln">pinpai <span class="pun">.<span class="pln"> <span class="str">"手机通过10v电压来充电"<span class="pun">;</span></span></span></span></span></span></span>
<span class="pln"> <span class="pun">}</span></span>
<span class="pln"> <span class="kwd">public<span class="pln"> <span class="kwd">function<span class="pln"> kaijidonghua<span class="pun">()<span class="pln"> <span class="pun">{</span></span></span></span></span></span></span></span>
<span class="pln"> echo <span class="str">"<<< 没有开机动画 >>>>"<span class="pun">;</span></span></span>
<span class="pln"> <span class="pun">}</span></span>
<span class="pun">}</span>
<span class="kwd">class<span class="pln"> moto <span class="kwd">extends<span class="pln"> souji <span class="pun">{</span></span></span></span></span>
<span class="pln"> <span class="kwd">public<span class="pln"> <span class="kwd">function<span class="pln"> __construct<span class="pun">()<span class="pln"> <span class="pun">{</span></span></span></span></span></span></span></span>
<span class="pln"> <span class="com">// $this->pinpai = "摩托罗拉";</span></span>
<span class="pln"> $this<span class="pun">-><span class="pln">congdian<span class="pun">();</span></span></span></span>
<span class="pln"> <span class="pun">}</span></span>
<span class="pln"> <span class="kwd">public<span class="pln"> <span class="kwd">function<span class="pln"> kaijidonghua<span class="pun">()<span class="pln"> <span class="pun">{</span></span></span></span></span></span></span></span>
<span class="pln"> echo <span class="str">"摩托罗拉商标"<span class="pun">;</span></span></span>
<span class="pln"> <span class="pun">}</span></span>
<span class="pun">}</span>
-
-
<span class="pln">$li <span class="pun">=<span class="pln"> <span class="kwd">new<span class="pln"> moto<span class="pun">();</span></span></span></span></span></span>
- $li
<span class="pln">$li<span class="pun">-><span class="pln">kaijidonghua<span class="pun">();</span></span></span></span>
= new moto ( );
-
- $li
->kaijidonghua ();<span class="com">//定义常量</span>
<span class="pln">define<span class="pun">(<span class="str">"WEBNAME"<span class="pun">,<span class="pln"> <span class="str">"文豆"<span class="pun">);</span></span></span></span></span></span></span>
<span class="kwd">function<span class="pln"> aa<span class="pun">(){</span></span></span>
-
<span class="pln"> echo WEBNAME<span class="pun">.<span class="str">"专注PHPWEB开发"<span class="pun">;</span></span></span></span>
-
<span class="pun">}</span>
<span class="pln">aa<span class="pun">();</span></span>
-
//定义常量<span class="kwd">class<span class="pln"> caiwu<span class="pun">{</span></span></span>
-
<span class="pln"> <span class="kwd">const<span class="pln"> suilv<span class="pun">=<span class="lit">0.05<span class="pun">;</span></span></span></span></span></span>
define
("WEBNAME"- , "文豆"
<span class="pln"> <span class="kwd">function<span class="pln"> __construct<span class="pun">(){</span></span></span></span>
);
<span class="pln"> echo WEBNAME<span class="pun">;</span></span>
<span class="pln"> <span class="pun">}</span></span>
-
<span class="pln"> <span class="kwd">function<span class="pln"> kaigonzi<span class="pun">(<span class="pln">$xingming<span class="pun">,<span class="pln">$gongzi<span class="pun">){</span></span></span></span></span></span></span></span>
- Funktion aa
<span class="pln"> $gongzi <span class="pun">=<span class="pln"> $gongzi<span class="pun">-<span class="pln">$gongzi<span class="pun">*<span class="kwd">self<span class="pun">::<span class="pln">suilv<span class="pun">;</span></span></span></span></span></span></span></span></span></span>
(){
<span class="pln"> <span class="kwd">return<span class="pln"> $xingming<span class="pun">.<span class="str">"的工资是:"<span class="pun">.<span class="pln">$gongzi<span class="pun">.<span class="str">"元"<span class="pun">;</span></span></span></span></span></span></span></span></span></span>
-
echo WEBNAME- ."专注PHPWEB开发"
<span class="pln"> <span class="pun">}</span></span>
;
<span class="pun">
}
<span class="pln">aa();
<span class="kwd">class<span class="pln"> caiwu{
<span class="pln"> <span class="kwd">const<span class="pln"> suilv=<span class="lit">0.05;
<span class="pln"> <span class="kwd">function<span class="pln"> __construct(){
<span class="pln"> echo WEBNAME;
<span class="pln"> }
<span class="pln"> <span class="kwd">function<span class="pln"> kaigonzi(<span class="pln">$xingming, <span class="pln">$gongzi){
<span class="pln"> $gongzi =<span class="pln"> $gongzi-<span class="pln">$gongzi*<span class="kwd">self::<span class="pln">suilv;
<span class="pln"> <span class="kwd">return<span class="pln"> $xingming.<span class="str">"的工资是: ".<span class="pln">$gongzi.<span class="str">"元";
<span class="pln"> }
}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<span class="com">/*员工类*/<code class="language-php"><span class="com">/*员工类*/</span>
-
<span class="kwd">class<span class="pln"> yuangong<span class="pun">{</span></span></span>
<span class="kwd">Klasse<span class="pln">yuangong<span class="pun">{</span></span></span>
<span class="pln"> <span class="kwd">private<span class="pln"> $xingming<span class="pun">;<span class="com">//姓名</span></span></span></span></span>
-
<span class="pln"> <span class="kwd">private<span class="pln"> $gongzisu<span class="pun">;<span class="com">//工资数</span></span></span></span></span>
<span class="pln"> <span class="kwd">privat<span class="pln"> $xingming<span class="pun">;//姓名</span></span></span></span>
<span class="pln"> <span class="kwd">function<span class="pln"> __construct<span class="pun">(<span class="pln">$xingming<span class="pun">,<span class="pln">$gongzisu<span class="pun">){</span></span></span></span></span></span></span></span>
<span class="pln"> $this<span class="pun">-><span class="pln">xingming <span class="pun">=<span class="pln"> $xingming<span class="pun">;</span></span></span></span></span></span>
<span class="pln"> <span class="kwd">privat<span class="pln"> $gongzisu<span class="pun">;//工资数<code class="language-php"><span class="pln"> $this<span class="pun">-><span class="pln">gongzisu <span class="pun">=<span class="pln"> $gongzisu<span class="pun">;</span></span></span></span></span></span>
<span class="pln"> <span class="pun">}</span></span>
-
<span class="pln"> <span class="kwd">function<span class="pln"> kaizi<span class="pun">(){</span></span></span></span>
<span class="pln"> <span class="kwd">funktion<span class="pln"> __construct<span class="pun">(<span class="pln">$xingming<span class="pun">,<span class="pln">$gongzisu<span class="pun">){<li class="L9"><code class="language-php"><span class="pln"> $caiwu <span class="pun">=<span class="pln"> <span class="kwd">new<span class="pln"> caiwu<span class="pun">();</span></span></span></span></span></span>
<span class="pln"> <span class="kwd">return<span class="pln"> $caiwu<span class="pun">-><span class="pln">kaigonzi<span class="pun">(<span class="pln">$this<span class="pun">-><span class="pln">xingming<span class="pun">,<span class="pln"> $this<span class="pun">-><span class="pln">gongzisu<span class="pun">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<span class="pln"> <span class="pun">}</span></span>
-
<span class="pun">}</span>
<span class="pln"> $this<span class="pun">-><span class="pln">xingming <span class="pun">=<span class="pln"> $xingming<span class="pun">;</span></span></span></span></span></span>
<span class="pln">$lisi <span class="pun">=<span class="pln"> <span class="kwd">new<span class="pln"> yuangong<span class="pun">(<span class="str">"李四"<span class="pun">,<span class="pln"> <span class="str">"6000"<span class="pun">);</span></span></span></span></span></span></span></span></span></span></span>
<span class="pln">echo $lisi<span class="pun">-><span class="pln">kaizi<span class="pun">();</span></span></span></span>
$this->gongzisu = $gongzisu;
<span class="pln"> <span class="pun">}</span></span>