Heim >Backend-Entwicklung >PHP-Tutorial >abstrakte Klasse, Schnittstelle, Merkmal

abstrakte Klasse, Schnittstelle, Merkmal

不言
不言Original
2018-04-04 14:00:221476Durchsuche

In diesem Artikel geht es um abstrakte Klassen, Schnittstellen und Merkmale in PHP. Jetzt teile ich ihn mit Ihnen. Freunde in Not können den Inhalt dieses Artikels auch als Referenz lesen


Abstrakte Klasse


Handbuchreferenz: http://php.net/manual/zh/sprache.oop5.abstract.php

Definition: 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. Und beim Erben einer abstrakten Klasse muss die Unterklasse alle abstrakten Methoden in der übergeordneten Klasse definieren (Konstanten können in der abstrakten Klasse definiert werden);

Schlüsselwort: abstract

<?php
abstract class AbstractClass
{
    const NAME=&#39;张三&#39;;
 // 强制要求子类定义这些方法
    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".self::NAME;
    }

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


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


Schnittstelle

Schlüsselwörter: Schnittstelle

interface test1{

  function say();
}
interface test2{
  function see();

}

//接口继承接口 (继承接口时使用extends关键字)

interface test3 extends test1,test2
{
    function sleep();

}

//类实现接口(实现接口时使用 implements关键字)

class test implements test1,test2{
  public function say(){}
  public function see(){}
  public function sleep()
  {
    echo &#39;休息&#39;;
  }

}
//接口中只能有抽象方法(不能定义常量,不能有构造方法,不能有普通方法),且接口类中所有未实现的方法需要在子类中全部实现


 

Trait implementiert Mehrfachvererbung

Referenzadresse https://www.cnblogs.com/smallrookie/p/6516010.html

Definition: Ab PHP 5.4.0 implementiert PHP eine neue Art der Code-Wiederverwendung.

<?php
trait A {
    public function smallTalk() {
        echo &#39;a&#39;;
    }
    public function bigTalk() {
        echo &#39;A&#39;;
    }
}
trait B {
    public function smallTalk() {
        echo &#39;b&#39;;
    }
    public function bigTalk() {
        echo &#39;B&#39;;
    }
}
 
class Aliased_Talker {
    use A, B {
        B::smallTalk insteadof A;  //使用B类的smallTalk方法(替换A方法)
        A::bigTalk insteadof B;
        B::bigTalk as talk;//重命名 B类中的bigTalk方法重命名为talk方法
    }
}

$obj = new Aliased_Talker;
$obj->smallTalk(); //b
$obj->bigTalk(); //A
$obj->talk();//B
//trait不能实例化,不能有常量

Verwandte Empfehlungen:

Detaillierte Beispiele für die objektorientierte PHP-Schnittstelle, Vererbung, abstrakte Klassen, Zerstörung, Klonen und andere erweiterte Funktionen

Erste Einführung in die PHP-Schnittstelle

Teilen der Eigenschaften und Funktionen von Traits in PHP


Das obige ist der detaillierte Inhalt vonabstrakte Klasse, Schnittstelle, Merkmal. 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