Heim > Backend-Entwicklung > PHP-Problem > Was sind abstrakte Klassen und statische Methoden in PHP?

Was sind abstrakte Klassen und statische Methoden in PHP?

王林
Freigeben: 2023-03-06 08:54:01
Original
2172 Leute haben es durchsucht

Die abstrakte Klasse in PHP bezieht sich auf eine Klasse mit dem Schlüsselwort abstract und einer abstrakten Methode. Sie kann nicht direkt instanziiert werden, sondern auf die durch das Schlüsselwort static geänderte Methode für Operationen.

Was sind abstrakte Klassen und statische Methoden in PHP?

Abstrakte Klasse

Abstrakte Klasse bezieht sich auf eine Klasse, bei der das abstrakte Schlüsselwort vor der Klasse und der abstrakten Methode hinzugefügt wird (das abstrakte Schlüsselwort wird vor dem Funktionsschlüsselwort der Klassenmethode hinzugefügt).

(Empfohlenes Tutorial: php-Video-Tutorial)

Abstrakte Klassen können nicht direkt instanziiert werden. Die abstrakte Klasse definiert nur die von der Unterklasse benötigten Methoden (oder implementiert sie teilweise). Unterklassen können eine abstrakte Klasse konkretisieren, indem sie sie erben und alle abstrakten Methoden in der abstrakten Klasse implementieren.

Wenn eine Unterklasse instanziiert werden muss, muss sie alle abstrakten Methoden in der abstrakten Klasse implementieren. Wenn die Unterklasse nicht alle abstrakten Methoden in der abstrakten Klasse implementiert, ist die Unterklasse ebenfalls eine abstrakte Klasse und muss in der Klasse durch das Schlüsselwort abstract vorangestellt werden und kann nicht instanziiert werden.

Beispiel:

abstract Class AbstractClass
{
    abstract public function A();//这里不要携带body
    abstract protected function B();//这里不要携带body
    public function C(){}//这里要携带body
}

class ClassA extends AbstractClass
{
    public function A(){
        echo "Hello,I&#39;m A <br/>";
    }
    protected function B(){
        echo "Hello,I&#39;m B <br/>";
    }
    public function E()
    {
        echo "Hello,I&#39;m E <br/>";
    }
}
Nach dem Login kopieren

Statische Methode:

Die statische Methode wird durch das Schlüsselwort static geändert.

Statische Methoden werden zum Betreiben statischer Eigenschaften verwendet. Daher können nicht statische Eigenschaften in statischen Methoden nicht manipuliert werden.

Da statische Methoden nicht über Objekte aufgerufen werden müssen, ist die Pseudovariable $this in statischen Methoden nicht verfügbar.

Wie greife ich auf statische Methoden zu?

Innerhalb der Klasse: Klassenname::statische Methode oder selbst::statische Methode

Außerhalb der Klasse: Klassenname::statische Methode oder Objektinstanz->statische Methode

Beispiel:

class Person{
    public static $nums = 0;    // 静态属性的申明
    public $age = 0;
    public function addNum(){
        self::$nums++;
        echo self::$nums;   // 在类里面,可用self关键词访问静态属性
        echo Person::$nums;     // 类可直接访问静态属性
        // echo $this->nums;  // 报错,静态属性不可以由对象通过 -> 操作符来访问
        self::getNum();     // 在类里面,可用self关键词访问静态方法
        Person::getNum();   // 类可直接访问静态方法
    }
    public static function getNum(){
        // 静态方法
        // echo $this->age;  // 报错,静态方法里面不能操作非静态属性
        echo &#39;真的吗?&#39;.self::$nums;    //静态方法中只能操作静态属性 
    }
}
$p1 = new Person();
$p1->addNum();
echo $p1::$nums;    // 对象实例可以这样访问静态属性
Person::getNum();   // 类可直接访问静态方法
$p1->getNum();  // 对象实例可以这样访问静态方法
Nach dem Login kopieren

Verwandte Empfehlungen: PHP-Training

Das obige ist der detaillierte Inhalt vonWas sind abstrakte Klassen und statische Methoden in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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