Vererbung
Normalerweise sind Klassen erforderlich, die dieselben Variablen und Funktionen wie andere vorhandene Klassen haben. Tatsächlich wäre es eine gute Übung, eine gemeinsame Klasse zu definieren, die in allen Projekten verwendet wird, und diese Klasse kontinuierlich zu erweitern, um sie an jedes spezifische Projekt anzupassen. Um dies zu vereinfachen, können Klassen aus anderen Klassen hervorgehen. Eine erweiterte oder abgeleitete Klasse besitzt alle Variablen und Funktionen ihrer Basisklasse (dies wird als „Vererbung“ bezeichnet, außer dass niemand stirbt) und umfasst alle in der abgeleiteten Klasse definierten Teile. Die Elemente in der Klasse können nicht reduziert werden, d. h. vorhandene Funktionen oder Variablen können nicht deregistriert werden. Eine Erweiterungsklasse hängt immer von einer einzelnen Basisklasse ab, d. h. Mehrfachvererbung wird nicht unterstützt. Verwenden Sie das Schlüsselwort „extends“, um eine Klasse zu erweitern.
Code kopieren Der Code lautet wie folgt:
Klassentest {
öffentliche Funktion __construct() {
}
öffentlicher Funktionsname() {
$ this-> ;xname('John');
}
private function showName($name) {
echo 'mein Name im Test ist '.$name;}
Klasse ExtendTest erweitert Test {
öffentliche Funktion __construct() {
parent::__construct();
}
private Funktion showName($name) {
echo 'mein Name in extendTest ist '. $name;
}
$test = new extensionTest();
The Das obige Beispiel definiert eine Klasse namens Named_Cart, die alle Variablen und Funktionen der Cart-Klasse sowie die zusätzliche Variable $owner und eine zusätzliche Funktion set_owner() enthält. Nun wird ganz normal ein benannter Warenkorb erstellt und der Besitzer des Warenkorbs kann festgelegt und abgefragt werden. Die normalen Warenkorbklassenfunktionen können weiterhin in der benannten Warenkorbklasse verwendet werden:
$ncart = new Named_Cart; // Einen neuen benannten Warenkorb erstellen
$ncart ->set_owner ("kris"); // Benennen Sie den Warenkorb
print $ncart->owner // Geben Sie den Namen des Warenkorbbesitzers aus
$ncart->add_item("10" , 1); // (Von der Warenkorbklasse geerbt)
?> Dies kann auch als „Vater-Kind“-Beziehung bezeichnet werden. Erstellen Sie eine Klasse, die übergeordnete Klasse, und verwenden Sie „extends“, um eine neue Klasse basierend auf der übergeordneten Klasse zu erstellen: die untergeordnete Klasse. Sie können diese neue Unterklasse sogar verwenden, um eine weitere Klasse basierend auf dieser Unterklasse zu erstellen.
Hinweis:
Eine Klasse kann erst verwendet werden, nachdem sie definiert wurde! Wenn Sie die Klasse Named_Cart benötigen, um die Klasse Cart zu erben, müssen Sie zuerst die Klasse Cart definieren. Wenn Sie eine weitere Yellow_named_cart-Klasse basierend auf der Named_Cart-Klasse erstellen müssen, müssen Sie zuerst die Named_Cart-Klasse definieren. Einfach ausgedrückt: Die Reihenfolge der Klassendefinitionen ist sehr wichtig.
Code kopieren Der Code lautet wie folgt:
class Person{
protected $name;//protected-Berechtigungen können in Unterklassen aufgerufen werden, aber nicht extern
protected $age;
protected $sex ;
function __construct($name,$age,$sex){
$this->name=$name;//Wenn dies verwendet wird, wird der Name erneut deklariert, auch wenn er nicht deklariert ist
$this->age=$age;
$this->sex=$sex;
echo "#############"; >}
public function say(){
echo „Mein Name: {$this->name}, mein Alter: {$this->age}:, mein Geschlecht: {$this-> sex }
";
}
protected function eat(){
echo "wwwwwwwwwwwwwwwwwwwww
";
}
function run(){
}
protected $name;//protected-Berechtigungen können in Unterklassen aufgerufen werden, aber nicht extern
protected $age;
protected $sex;}
//inherited
class Student erweitert Person {
var $school;
function __construct($name,$age,$sex,$school){
parent::__construct();//Rufen Sie die Konstruktormethode der übergeordneten Klasse auf
$this->school=$school;
}
//Überladen Sie die Methode say() und erweitern Sie sie
geschützte Funktion say(){//Die übergeordnete Klasse verwendet öffentliche und die Berechtigungen der Unterklasse kann nicht niedriger als die übergeordnete Klasse sein, Sie können dieselben Berechtigungen wie die übergeordnete Klasse haben
//Person::say();//Rufen Sie die say()-Methode der übergeordneten Klasse auf
parent::say(); // Rufen Sie die Methode say () der übergeordneten Klasse auf. Parent stellt den Namen der übergeordneten Klasse dar und kann auch aufgerufen werden, wenn sich der Name der übergeordneten Klasse ändert.
echo „Meine Schule {$this->school}
“;//m.sbmmt.com
}
function Study(){
echo „{ $this ->name} studiert
";
}
}
$s=new Student("zhangsan",23,"male");
$s -> say();
$s->study();
* 1. Eines der drei Hauptmerkmale von objektorientierten
*
* 2. Offenheit und Zugänglichkeit Erweiterbarkeit
*
* 3. Erhöhen Sie die Wiederverwendbarkeit von Code
*
* 4. Verbessern Sie die Wartbarkeit der Software
*
* 5. Bei der Vererbung werden Unterklassen für die „erweiterte“ übergeordnete Klasse verwendet
*
* C++ gehört zur Mehrfachvererbung, dieselbe Klasse kann mehrere übergeordnete Klassen haben
*
* PHP und JAVA gehören zur Einzelvererbung, dieselbe Klasse kann nur eine übergeordnete Klasse haben
*
* Egal Wie viele Vererbungen oder einzelne Vererbungen können mehrere Unterklassen haben
*
* Solange Sie Mitglieder haben, die beim Entwerfen von zwei Klassen gemeinsam genutzt werden können, verwenden Sie den gemeinsam genutzten Inhalt allein als Basisklasse
*
* 1. Anwendung der Klassenvererbung
*
* 1. Deklarieren Sie eine Unterklasse und verwenden Sie das Schlüsselwort „extens“, um eine übergeordnete Klasse zu erben (erweitern)
*
* 2. Unterklassen können alle Inhalte von der übergeordneten Klasse erben Klasse, einschließlich Mitgliedsattributmethoden, Konstruktionsmethoden ... können in Unterklassen verwendet werden
*
* 2. Zugriffstypsteuerung
*
* Obwohl Unterklassen den gesamten Inhalt von der übergeordneten Klasse erben können, privat Mitglieder können nur in dieser Klasse verwendet werden und können nicht in Unterklassen verwendet werden
*
* Beim Kapseln können Sie Ihre eigene Klasse erstellen. Es kann intern darauf zugegriffen werden und von Unterklassen verwendet werden, es kann jedoch nicht außerhalb der Klasse verwendet werden. Setzen Sie einfach die Berechtigung auf protected
*
*
*
* 3. Überladen Sie die übergeordnete Klasse in den Unterklassenmethoden
*
* 1. Eine Unterklasse kann denselben Methodennamen deklarieren als übergeordnete Klasse, d. h. die Unterklasse überschreibt die Methode mit demselben Namen wie die übergeordnete Klasse
*
* 2. Das Methodenpaar der Unterklasse Erweiterung der Methode der übergeordneten Klasse
*
* 3. Rufen Sie die überschriebene Methode in der übergeordneten Klasse in der Unterklasse auf
* Verwenden Sie den Namen der übergeordneten Klasse::Methodenname() parent::Methodenname()
*
* 4. Schreiben Sie den Konstruktor in die Unterklasse . Wenn in der übergeordneten Klasse ein Konstruktor vorhanden ist, rufen Sie unbedingt den überschriebenen Konstruktor in der übergeordneten Klasse auf
*
* Hinweis: In der Unterklasse dürfen die Zugriffsberechtigungen überladener Methoden nicht niedriger sein als in der übergeordneten Klasse (Unterklassen können die Berechtigungen erweitern, aber nicht reduzieren)