Heim  >  Artikel  >  Backend-Entwicklung  >  Sie müssen verstehen, was abstrakte Klassen und abstrakte Methoden in PHP sind

Sie müssen verstehen, was abstrakte Klassen und abstrakte Methoden in PHP sind

WBOY
WBOYOriginal
2021-10-26 15:52:063509Durchsuche

Im vorherigen Artikel habe ich Ihnen „Führen Sie eine Einführung in die Schnittstellendeklaration und -anwendung in PHP in fünf Minuten (detaillierte Beispiele)“ gebracht, in der die Deklarations- und Anwendungsprobleme der PHP-Schnittstelle im Detail vorgestellt wurden Werfen wir in diesem Artikel einen Blick auf die abstrakten Klassen und abstrakten Methoden in PHP. Ich hoffe, dass es für alle hilfreich ist!

Sie müssen verstehen, was abstrakte Klassen und abstrakte Methoden in PHP sind

Im vorherigen Artikel habe ich die Schnittstelle vorgestellt und erwähnt, dass die Schnittstelle als spezielle abstrakte Klasse verstanden werden kann. Um zu verstehen, was eine abstrakte Klasse ist, müssen wir zuerst darüber sprechen Eine abstrakte Methode besteht darin, dass die Entstehung abstrakter Klassen und abstrakter Methoden hauptsächlich die Vererbung von Klassen erleichtert. Schauen wir uns dann an, was abstrakte Methoden und abstrakte Klassen sind.

Was ist eine abstrakte Methode? In unserer vorherigen Studie kann eine Klasse mehrere Unterklassen haben. Wir definieren abstrakte Methoden, um die Klassenvererbung zu erleichtern. Die in unserer Klasse definierten Methoden ohne Methodenkörper sind abstrakte Methoden. Was ist also ein Methodenkörper? Der Methodenkörper bezieht sich auf die geschweiften Klammern und den Inhalt innerhalb der geschweiften Klammern, wenn die Klasse deklariert wird. Das Fehlen eines Methodenkörpers bedeutet, dass kein solcher Inhalt vorhanden ist. Stattdessen wird er direkt nach der Methodenanweisung platziert und mit einem Semikolon abgeschlossen während der Erklärung. Dies wird als abstrakte Methode bezeichnet. Es ist zu beachten, dass abstrakte Methoden bei der Deklaration mit dem Schlüsselwort „abstract“ geändert werden müssen. Das Syntaxformat lautet wie folgt:

abstract 访问权限修饰符 function 方法名1(参数列表);
abstract 访问权限修饰符 function 方法名2(参数列表);

Das Verständnis abstrakter Methoden ist relativ einfach. Schauen wir uns als Nächstes an, was eine abstrakte Klasse ist.

abstract”来进行修饰。它的语法格式如下:

abstract class demo{
var $test;
abstract function fun1();
abstract function fun2();
}

抽象方法的理解还是比较简单的,接下来我们看一下什么是抽象类。

什么是抽象类

通过上文已经知道了什么是抽象方法,那么抽象类的定义其实也很好理解,当一个类的里面有一个方法是抽象方法的时候,我们定义这个类就是抽象类。同时抽象类也是需要使用“abstract”关键字来修饰的,在抽象类里面可以有不是抽象方法的成员属性,但是一旦有一个方法是抽象方法,那这个类就是抽象类。

其中需要注意的是,抽象类的成员方法并不全是抽象方法,哪些不是抽象方法的成员方法和属性访问权限不能是private

Was ist eine abstrakte Klasse? Durch das oben Gesagte wissen wir bereits, was eine abstrakte Methode ist. Daher ist die Definition einer abstrakten Klasse tatsächlich leicht zu verstehen , wir definieren diese Klasse als abstrakte Klasse. Gleichzeitig müssen abstrakte Klassen auch mit dem Schlüsselwort „abstract“ geändert werden. In abstrakten Klassen kann es Mitgliedsattribute geben, die keine abstrakten Methoden sind, aber sobald eine Methode eine abstrakte Methode ist, dann ist diese Klasse eine abstrakte Klasse.

Es ist zu beachten, dass nicht alle Mitgliedsmethoden abstrakter Klassen abstrakte Methoden sind und Attributzugriffsberechtigungen, die keine abstrakten Methoden sind, nicht privat sein müssen. geerbt.

Lassen Sie mich Ihnen unten ein Beispiel zeigen:

    <?php
        abstract class father{
            public $study = &#39;好好学习<br>&#39;;
            public $study1 = &#39;天天向上<br>&#39;;
            abstract function title();
            abstract function output();
        }
        class Demo extends father{
            public function title(){
                echo &#39;福如东海,寿比南山。&#39;;
            }
            public function output(){
                echo $this -> study.$this -> study1;
            }
        }
        $obj = new Demo();
        $obj -> output();
        $obj -> title();
    ?>
  • Eigenschaften abstrakter Klassen

  • Sowohl abstrakte Klassen als auch abstrakte Methoden müssen mit abstrakten Methoden geändert werden.
  • Abstrakte Methoden müssen in abstrakten Klassen enthalten sein. In abstrakten Klassen kann es keine abstrakten Methoden geben.
  • Abstrakte Klassen können keine Objekte direkt erstellen (instanziiert). Die abstrakte Klasse wird nicht überschrieben. Schreiben Sie alle abstrakten Methoden, dann ist die Unterklasse immer noch eine abstrakte Klasse.


Die abstrakte Klasse enthält abstrakte Methoden, die nicht implementiert werden können. Dies bedeutet, dass die abstrakte Klasse nicht instanziiert werden kann und das Objekt nicht erstellt werden kann Daher können wir es nicht direkt verwenden. Welche Probleme können wir durch die Verwendung abstrakter Klassen lösen, da wir sie nicht direkt verwenden können?

Als nächstes schauen wir uns ein Beispiel an, definieren eine abstrakte Klasse und verwenden dann eine andere Klasse, um diese abstrakte Klasse zu erben und die abstrakten Methoden in der abstrakten Klasse zu implementieren.

Das Beispiel lautet wie folgt:

rrreee
Ausgabeergebnis:

Sie müssen verstehen, was abstrakte Klassen und abstrakte Methoden in PHP sind

Aus dem obigen Beispiel definieren wir eine abstrakte Klasse und verwenden dann eine andere Klasse, um diese abstrakte Klasse zu erben und die abstrakte Methode in der abstrakten Klasse zu implementieren .

Wie oben erwähnt, wurde im vorherigen Artikel über das relevante Wissen über die PHP-Schnittstelle gesprochen. Da es sich also um eine spezielle abstrakte Klasse handelt, welche Unterschiede und Gemeinsamkeiten bestehen ? Schauen wir uns unten um. Es wird empfohlen, dass Sie zuerst „Fünf Minuten, um Ihnen die Schnittstellendeklaration und -anwendung in PHP zu zeigen (detaillierte Beispiele)

“ zu lesen, in dem die PHP-Schnittstelle vorgestellt wird.

Der Unterschied zwischen PHP-Schnittstellen und abstrakten Klassen

  • Abstrakte Klassen können Attribute, gewöhnliche Methoden und abstrakte Methoden haben, Schnittstellen können jedoch keine Attribute, gewöhnlichen Methoden und Konstanten haben.
  • In abstrakten Klassen gibt es möglicherweise keine abstrakten Methoden, in Schnittstellen müssen jedoch „abstrakte“ Methoden vorhanden sein.
  • Abstrakte Klassen werden vor der Klasse mit dem Schlüsselwort abstract deklariert, und die Klasse wird als Klasse deklariert. Die Schnittstelle wird mit Schnittstelle deklariert, kann aber nicht mit Klasse deklariert werden, da die Schnittstelle keine Klasse ist.
  • Abstrakte Klassen verwenden das Schlüsselwort „extends“, um der Unterklasse zu ermöglichen, die übergeordnete Klasse zu erben und dann detaillierte abstrakte Methoden in der Unterklasse zu implementieren. Die Schnittstelle verwendet Implementierungen, um es gewöhnlichen Klassen zu ermöglichen, detaillierte Methoden der Schnittstelle in der Klasse zu implementieren, und die Schnittstelle kann mehrere Methoden gleichzeitig implementieren. Verwenden Sie einfach Kommas, um die einzelnen Schnittstellen zu trennen.

Die Ähnlichkeiten zwischen PHP-Schnittstelle und abstrakter Klasse

🎜
  • werden alle verwendet, um eine bestimmte Sache zu deklarieren, Namen und Parameter zu standardisieren und Module zu bilden, ohne detaillierte Implementierungsdetails.

  • Alle zugehörigen Details werden durch Klassen umgesetzt.

  • Syntaktisch ist die abstrakte Methode einer abstrakten Klasse dieselbe wie eine Schnittstelle und kann keinen Methodenkörper, also das Symbol {}, haben.

  • Alle Schnittstellen können Schnittstellen erben, um neue Schnittstellen zu bilden, und abstrakte Klassen können abstrakte Klassen erben, um neue abstrakte Klassen zu bilden.

Bei Interesse können Sie auf „PHP-Video-Tutorial“ klicken, um mehr über PHP-Kenntnisse zu erfahren.

Das obige ist der detaillierte Inhalt vonSie müssen verstehen, was abstrakte Klassen und abstrakte Methoden in PHP sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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