Heim > Backend-Entwicklung > PHP-Problem > Was bedeutet das Umschreiben von PHP-Methoden?

Was bedeutet das Umschreiben von PHP-Methoden?

藏色散人
Freigeben: 2023-03-07 19:26:02
Original
2640 Leute haben es durchsucht

Das Umschreiben von PHP-Methoden bezieht sich auf das Überschreiben der von der übergeordneten Klasse geerbten Methoden. Die Methode lautet wie folgt: Definieren Sie zuerst einen Konstruktorparameter und verwenden Sie dann das Schlüsselwort „extends“. Überschreiben Sie schließlich die Methode der übergeordneten Klasse.

Was bedeutet das Umschreiben von PHP-Methoden?

Empfohlen: „PHP-Video-Tutorial

  • Diese Methode ist für jede Computermarke geeignet

PHP-Methodenüberschreibungsbeispiel für objektorientierte Programmierung (OOP)

Die Das Beispiel in diesem Artikel beschreibt den Methodenüberschreibungsvorgang der objektorientierten PHP-Programmierung (OOP). Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Da PHP eine schwach typisierte Sprache ist, kann es verschiedene Datentypen in den Parametern der Methode selbst empfangen, und weil die PHP-Methode eine unbegrenzte Anzahl von Daten empfangen kann Parameter, also durch Es ist auch nicht zulässig, eine unterschiedliche Anzahl von Parametern zu übergeben, um unterschiedliche Methoden mit unterschiedlichen Methodennamen aufzurufen, sodass PHP nicht überlastet werden kann.

Obwohl Methoden mit demselben Namen in PHP nicht definiert werden können, können wir in den beiden Klassen mit einer Eltern-Kind-Beziehung Methoden mit demselben Namen wie die übergeordnete Klasse in der Unterklasse definieren und so die von der übergeordneten Klasse geerbten Methoden überschreiben . (Methode der übergeordneten Klasse überschreiben).

<?php
class Person
{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name, $sex, $age) {
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
//这个人可以说话的方法, 说出自己的属性
function say() {
echo "my name is:" . $this->name . " sex:" . $this->sex . " my age is:" . $this->age;
}
}
//定义一个子类“学生类“使用”extends”关键字来继承”人”类:
class Student extends Person
{
var $school; //学生所在学校的属性
function __construct($name,$sex,$age,$school)
{
parent::__construct($name,$sex,$age);
$this->school = $school;
}
// 重写父类的say()方法
function say()
{
echo "my name is:" . $this->name ." my school is:" . $this->school;
}
//这个学生学习的方法
function study()
{
echo "my name is:" . $this->name . " my school is:" . $this->school;
}
}
?>
Nach dem Login kopieren

Wenn eine Unterklasse eine übergeordnete Klassenmethode überschreibt, sollten Sie außerdem darauf achten. Die Zugriffsrechte der Methoden in der Unterklasse dürfen nicht niedriger sein als die Zugriffsrechte der überschriebenen Methode der übergeordneten Klasse Das heißt, es muss höher oder gleich den Zugriffsrechten der übergeordneten Klasse sein.

Wenn beispielsweise die Zugriffsberechtigung der Methode der übergeordneten Klasse geschützt ist, müssen die zu überschreibenden Berechtigungen in der Unterklasse geschützt und öffentlich sein. Wenn die Methode der übergeordneten Klasse öffentlich ist, kann dies auch für die zu überschreibende Methode in der Unterklasse gelten Nur öffentlich sein. Kurz gesagt, die Unterklassenmethoden in einer Klasse haben immer höhere oder gleiche Zugriffsrechte wie die überschriebenen Methoden der übergeordneten Klasse.

Im obigen Beispiel haben wir die von der übergeordneten Klasse geerbte Methode „say()“ in der Unterklasse „Student“ überschrieben. Durch das Überschreiben haben wir die Erweiterung der „Methode“ erreicht. Obwohl dies das oben erwähnte Problem löst, kann eine Methode in der tatsächlichen Entwicklung nicht nur aus einem Code oder mehreren Codes bestehen. Beispielsweise verfügt die Methode „say()“ in der Klasse „Person“ über 100 Codezeilen Wir möchten diese Methode überschreiben und die ursprünglichen Funktionen sowie ein wenig mehr Funktionalität beibehalten. Wir müssen die ursprünglichen 100 Codezeilen plus ein paar erweiterte Codezeilen neu schreiben Die übergeordnete Klasse kann den Originalcode zu diesem Zeitpunkt nicht sehen. Wir haben auch eine Lösung: Sie können in der Unterklassenmethode die überschriebene Methode in der übergeordneten Klasse aufrufen und einige Ihrer eigenen Funktionen hinzufügen . So implementieren Sie den Aufruf der überschriebenen Methode der übergeordneten Klasse in der Methode der Unterklasse:

Eine besteht darin, den „Klassennamen::“ der übergeordneten Klasse zu verwenden, um die überschriebene Methode der übergeordneten Klasse aufzurufen Verwenden Sie die Methode „parent::“ „, um die überschriebene Methode in der übergeordneten Klasse aufzurufen.

//定义一个子类“学生类“使用”extends”关键字来继承”人”类:
class Student extends Person
{
var $school; //学生所在学校的属性
function __construct($name,$sex,$age,$school)
{
parent::__construct($name,$sex,$age);
$this->school = $school;
}
// 重写父类的say()方法
function say()
{
//使用父类的"类名::"来调用父类中被覆盖的方法;
// Person::say();
//或者使用"parent::"的方试来调用父类中被覆盖的方法;
parent::say();
echo "my name is:" . $this->name ." my school is:" . $this->school;
}
//这个学生学习的方法
function study()
{
echo "my name is:" . $this->name . " my school is:" . $this->school;
}
}
Nach dem Login kopieren

Jetzt können Sie auf zwei Arten auf die überschriebene Methode in der übergeordneten Klasse zugreifen. Welche Methode sollten wir am besten wählen? Benutzer stellen möglicherweise fest, dass der von ihnen geschriebene Code auf die Variablen und Funktionen der übergeordneten Klasse zugreift. Dies gilt insbesondere dann, wenn die Unterklasse sehr raffiniert oder die Elternklasse sehr spezialisiert ist. Verwenden Sie im Code nicht den wörtlichen Namen der übergeordneten Klasse, sondern den speziellen Namen parent, der sich auf den Namen der übergeordneten Klasse bezieht, auf die die Unterklasse in der Extends-Deklaration verweist. Dadurch wird vermieden, dass der Name der übergeordneten Klasse an mehreren Stellen verwendet wird. Wenn der Vererbungsbaum während der Implementierung geändert werden muss, ändern Sie einfach die Extens-Deklaration in der Klasse.

Das obige ist der detaillierte Inhalt vonWas bedeutet das Umschreiben von PHP-Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage