Maison  >  Article  >  développement back-end  >  Introduction à l'héritage, au polymorphisme et à l'encapsulation orientés objet PHP

Introduction à l'héritage, au polymorphisme et à l'encapsulation orientés objet PHP

小云云
小云云original
2018-03-02 09:49:152302parcourir

1. Interface
Dans le langage de programmation PHP, une interface est un type abstrait et un ensemble de méthodes abstraites. Les interfaces sont généralement déclarées comme interface. Une classe implémente les méthodes de l'interface (méthodes abstraites) en implémentant l'interface.

Définition de l'interface :

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;
        }
    }

Attention particulière :
* Toutes les classes sont des méthodes abstraites (pas besoin de déclarer abstract)
* La méthode abstraite de l'interface est publique
* Les membres (champs) doivent être des constantes

2. Héritage
Une classe qui hérite d'une autre classe est appelée une sous-classe de cette classe. Cette relation est souvent représentée par la métaphore du parent et de l’enfant. La sous-classe héritera
des caractéristiques de la classe parent. Ces propriétés sont constituées de propriétés et de méthodes. Les sous-classes peuvent ajouter de nouvelles fonctions au-delà de celles de la classe parent, c'est pourquoi les sous-classes sont également appelées « extensions » de la classe parent.
En PHP, l'héritage de classe est implémenté via le mot-clé extends. Les classes qui héritent d'autres classes deviennent des sous-classes ou des classes dérivées, et les classes dont les sous-classes héritent deviennent des classes parentes ou des classes de base.

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()获得私有字段
Note spéciale :
Parfois, les champs et méthodes de la classe parent ne sont pas nécessaires, donc les champs et méthodes de la classe parent peuvent être modifiés en réécrivant la sous-classe.


class Computer {
    public $_name = '联想';    protected function run() {
        echo '我是父类';
    }
}//重写其字段、方法class NoteBookComputer extends Computer {
    public $_name = 'IBM';    public function run() {
        echo '我是子类';
    }
}
Appelez la méthode de la classe parent en la remplaçant
Parfois, nous devons pouvoir appeler le contenu de la méthode de la classe parent via la méthode surchargée. Dans ce cas, nous devons utiliser

. Syntaxe : Nom de la classe parent ::method(), parent::method() peuvent être appelés.
Le mot-clé final peut empêcher l'héritage d'une classe. Parfois, vous voulez simplement être une classe indépendante et ne voulez pas être héritée et utilisée par d'autres classes.

3. Classes et méthodes abstraites
Caractéristiques des classes abstraites :

* Les classes abstraites ne peuvent pas produire d'objets d'instance et ne peuvent être héritées que
* Les méthodes abstraites doivent être dans des classes abstraites. Il n'y a pas nécessairement de méthodes abstraites dans les classes abstraites ;
* Lors de l'héritage d'une classe abstraite, la sous-classe doit remplacer toutes les méthodes abstraites de la classe parent
* Une méthode définie comme abstraite déclare uniquement sa méthode appelante (paramètres) ; , Pas réalisé.

3. Polymorphisme
abstract class Computer {
    abstract function run();}final class NotebookComputer extends Computer {
    public function run() {
        echo '抽象类的实现';
    }
}
Le polymorphisme signifie que la POO peut redéfinir ou modifier la nature ou le comportement d'une classe en fonction du contexte dans lequel la classe est utilisée, ou de plusieurs implémentations différentes de l'interface Polymorphic. .



Recommandations associées :
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 );


Objet d'identification orienté objet PHP

Programmation orientée objet PHP Idées de développement et analyse de cas

Connaissances pratiques de base du PHP orienté objet

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn