Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die objektorientierte Vererbung, den Polymorphismus und die Kapselung von PHP

Einführung in die objektorientierte Vererbung, den Polymorphismus und die Kapselung von PHP

小云云
小云云Original
2018-03-02 09:49:152302Durchsuche

1. Schnittstelle
In der Programmiersprache PHP ist eine Schnittstelle ein abstrakter Typ und eine Sammlung abstrakter Methoden. Schnittstellen werden normalerweise als Schnittstelle deklariert. Eine Klasse implementiert die Methoden der Schnittstelle (abstrakte Methoden), indem sie die Schnittstelle implementiert.

Schnittstellendefinition:

interface InterAnimal{
        public function speak();
        public function name($name);
    }//接口实现
 class cat implements InterAnimal{
        public function speak(){
            echo "speak";
        }        public function name($name){
            echo "My name is ".$name;
        }
    }

Besonderer Hinweis:
* Alle Klassen sind abstrakte Methoden (keine Notwendigkeit, abstrakt zu deklarieren)
* Die abstrakte Methode der Schnittstelle ist öffentlich
* Mitglieder (Felder) müssen Konstanten sein

2. Vererbung
Eine Klasse, die von einer anderen Klasse erbt, wird als Unterklasse dieser Klasse bezeichnet. Diese Beziehung wird oft durch die Metapher von Eltern und Kind dargestellt. Die Unterklasse erbt
die Eigenschaften der übergeordneten Klasse. Diese Eigenschaften bestehen aus Eigenschaften und Methoden. Unterklassen können über die Funktionen der übergeordneten Klasse hinaus neue Funktionen hinzufügen. Daher werden Unterklassen auch als „Erweiterungen“ der übergeordneten Klasse bezeichnet.
In PHP wird die Klassenvererbung über das Schlüsselwort „extens“ implementiert. Klassen, die von anderen Klassen erben, werden zu Unterklassen oder abgeleiteten Klassen, und Klassen, von denen Unterklassen erben, werden zu übergeordneten Klassen oder Basisklassen.

class Computer {
    private $_name = '联想';    public function __get($_key) {
        return $this->$_key;
    }    public function run() {
        echo '父类run方法';
    }
}class NoteBookComputer extends Computer {}$notebookcomputer = new NoteBookComputer ();$notebookcomputer->run ();  //继承父类中的run()方法echo $notebookcomputer->_name;  //通过魔法函数__get()获得私有字段
Besonderer Hinweis:
Manchmal werden die Felder und Methoden der übergeordneten Klasse nicht benötigt, sodass die Felder und Methoden der übergeordneten Klasse durch Umschreiben der Unterklasse geändert werden können.


class Computer {
    public $_name = '联想';    protected function run() {
        echo '我是父类';
    }
}//重写其字段、方法class NoteBookComputer extends Computer {
    public $_name = 'IBM';    public function run() {
        echo '我是子类';
    }
}
Rufen Sie die übergeordnete Klassenmethode auf, indem Sie sie überschreiben
Manchmal müssen wir in der Lage sein, den Methodeninhalt der übergeordneten Klasse über die überschriebene Methode aufzurufen. In diesem Fall müssen wir

verwenden Syntax: Name der übergeordneten Klasse::method(), parent::method() kann aufgerufen werden.
Das letzte Schlüsselwort kann verhindern, dass eine Klasse geerbt wird. Manchmal möchten Sie einfach nur eine unabhängige Klasse sein und nicht von anderen Klassen geerbt und verwendet werden.

3. Abstrakte Klassen und Methoden
Abstrakte Klasseneigenschaften:

* Abstrakte Klassen können keine Instanzobjekte erzeugen und können nur vererbt werden;
* Abstrakte Methoden müssen in abstrakten Klassen sein. In abstrakten Klassen müssen nicht unbedingt abstrakte Methoden vorhanden sein.
* Beim Erben einer abstrakten Klasse muss die Unterklasse alle abstrakten Methoden in der übergeordneten Klasse überschreiben.
* Eine als abstrakt definierte Methode deklariert nur ihre aufrufende Methode (Parameter). , Nicht realisiert.

3. Polymorphismus
abstract class Computer {
    abstract function run();}final class NotebookComputer extends Computer {
    public function run() {
        echo '抽象类的实现';
    }
}
Polymorphismus bedeutet, dass OOP die Art oder das Verhalten einer Klasse entsprechend dem Kontext, in dem die Klasse verwendet wird, oder mehreren verschiedenen Implementierungen der Schnittstelle neu definieren oder ändern kann .



Verwandte Empfehlungen:
interface Computer {
    public function version();
    public function work();}class NotebookComputer implements Computer {
    public function version() {
        echo '联想<br>';
    }    public function work() {
        echo '笔记本正在随时携带运行!';
    }
}class desktopComputer implements Computer {
    public function version() {
        echo 'IBM';
    }    public function work() {
        echo '台式电脑正在工作站运行!';
    }
}class Person {
    public function run($type) {
        $type->version ();        $type->work ();
    }
}$person = new Person ();$desktopcomputer = new desktopComputer ();$notebookcomputer = new NoteBookComputer ();$person->run ( $notebookcomputer );


PHP objektorientiertes Identifikationsobjekt

PHP objektorientierte Programmierung Entwicklungsideen und Fallanalyse

Praktische Grundkenntnisse von PHP objektorientiert

Das obige ist der detaillierte Inhalt vonEinführung in die objektorientierte Vererbung, den Polymorphismus und die Kapselung von PHP. 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