Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen Merkmalen und Schnittstellen?

Was ist der Unterschied zwischen Merkmalen und Schnittstellen?

coldplay.xixi
coldplay.xixiOriginal
2020-07-01 15:43:023653Durchsuche

Der Unterschied zwischen Merkmalen und Schnittstellen ist: 1. Merkmale ähneln include und können mithilfe von use in die Mitte der Klasse eingefügt werden. 2. Die definierten Methoden sind Teil der Klasse und können nicht direkt instanziiert werden. Die Methoden in der Schnittstelle sind virtuell. Diese Methoden müssen beim Erben neu definiert werden.

Was ist der Unterschied zwischen Merkmalen und Schnittstellen?

Der Unterschied zwischen Merkmalen und Schnittstellen ist:

1. trait sieht eher so aus, als ob es sich um Code handelt Es handelt sich um ein kleines Plug-In, das zur Wiederverwendung geschrieben wurde und dem include ähnelt. Sie können es verwenden, um es in der Mitte einer Klasse zu platzieren, sodass die im Merkmal definierten Methoden Teil der Klasse sind und nicht direkt instanziiert werden können.

2. Die Methoden in interface sind alle virtuell und müssen beim Erben neu definiert werden. Mit anderen Worten, die Methoden sind beschreibender Natur und haben keine tatsächlichen Operationen. Wenn Sie erben, müssen Sie diese Methoden implementieren, da sonst Fehler auftreten und nicht fehlen dürfen. Schnittstellen werden in der Architektur häufig verwendet, um die Eigenschaften und Methoden einer Instanz abstrakt zu definieren. Vereinfacht ausgedrückt ist es wie eine Vereinbarung, eine vom Chef zugewiesene Aufgabe. Wenn Sie erben möchten, müssen Sie diese Vereinbarung einhalten, also die von Ihrem Chef zugewiesenen Aufgaben erfüllen.

<?php
trait MyTrait
{
    protected $var = &#39;MyTrait_var&#39;;
    protected $var1 = &#39;MyTrait_var&#39;;
 
    function __construct()
    {
        echo $this->var."</br>";
    }
 
    function a()
    {
        echo "a"."</br>";
    }
}
 
interface MyInterface
{
    function __construct();
    function b();
}
 
abstract class MyAbstract
{
    protected $var2 = &#39;MyAbstract_var&#39;;
    use MyTrait;
 
    function b()
    {
        echo "b"."</br>";
    }
}
 
class MyClass extends MyAbstract implements MyInterface
{
    protected $var3 = &#39;MyClass_var&#39;;
    function c()
    {
        echo "c"."</br>";
    }
}
 
$class = new MyClass();
$class->a();
$class->b();
$class->c();

Im obigen Code kann das function b() in MyAbstract auch in MyClass platziert werden, oder MyAbstract implementiert die Schnittstelle MyInterface

Verwandte Lernempfehlungen: PHP-Programmierung vom Anfänger bis zum Meister

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Merkmalen und Schnittstellen?. 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