Was nützt die abstrakte PHP-Klasse?

(*-*)浩
Freigeben: 2023-02-25 22:52:01
Original
2946 Leute haben es durchsucht

Abstrakte Klassen werden häufig verwendet, um abstrakte Konzepte darzustellen, die aus der Analyse und Gestaltung von Problembereichen abgeleitet werden. Sie sind Abstraktionen einer Reihe spezifischer Konzepte, die unterschiedlich aussehen, aber im Wesentlichen gleich sind.

Was nützt die abstrakte PHP-Klasse?

Abstrakte Klasse ist unvollständig, sie kann nur als Basisklasse verwendet werden. Beim objektorientierten Ansatz werden abstrakte Klassen hauptsächlich zum Verbergen von Typen und als globale Variablen verwendet. (Empfohlenes Lernen: PHP-Video-Tutorial)

PHP 5 unterstützt abstrakte Klassen und abstrakte Methoden. Als abstrakt definierte Klassen können nicht instanziiert werden. Jede Klasse muss als abstrakt deklariert werden, wenn mindestens eine Methode darin als abstrakt deklariert ist. Eine als abstrakt definierte Methode deklariert nur ihre aufrufende Methode (Parameter) und kann nicht ihre spezifische Funktionsimplementierung definieren.

Beim Erben einer abstrakten Klasse muss die Unterklasse alle abstrakten Methoden in der übergeordneten Klasse definieren. Außerdem muss die Zugriffskontrolle dieser Methoden mit der in der übergeordneten Klasse identisch sein (oder entspannter sein).

Wenn beispielsweise eine abstrakte Methode als geschützt deklariert ist, sollte die in der Unterklasse implementierte Methode als geschützt oder öffentlich deklariert werden und kann nicht als privat definiert werden.

Außerdem müssen die Methodenaufrufmethoden übereinstimmen, d. h. Art und Anzahl der erforderlichen Parameter müssen konsistent sein.

Wenn beispielsweise die Unterklasse einen optionalen Parameter definiert, dieser jedoch nicht in der Deklaration der abstrakten Methode der übergeordneten Klasse enthalten ist, besteht kein Konflikt zwischen den beiden Deklarationen.

Dies gilt auch für Konstruktoren seit PHP 5.4. Konstruktordeklarationen vor PHP 5.4 könnten unterschiedlich sein.

Beispiel für eine abstrakte Klasse

<?php
abstract class AbstractClass
{
 // 强制要求子类定义这些方法
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);

    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->getValue() . "\n";
    }
}

class ConcreteClass1 extends AbstractClass
{
    protected function getValue() {
        return "ConcreteClass1";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass1";
    }
}

class ConcreteClass2 extends AbstractClass
{
    public function getValue() {
        return "ConcreteClass2";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass2";
    }
}

$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue(&#39;FOO_&#39;) ."\n";

$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue(&#39;FOO_&#39;) ."\n";
?>
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas nützt die abstrakte PHP-Klasse?. 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