Maison  >  Article  >  développement back-end  >  Introduction à l'utilisation de l'héritage de classe orienté objet en php

Introduction à l'utilisation de l'héritage de classe orienté objet en php

黄舟
黄舟original
2017-07-02 11:25:54991parcourir

L'héritage des classes PHP est un point de connaissance important dans l'apprentissage du langage PHP. Alors, comment apprendre correctement l’héritage de classe PHP ? En Programmation orientée objet PHP, l'héritage de classe est toujours le plus critique.

C'est comme si les humains avaient des enfants (pourquoi devons-nous avoir des enfants ? Est-ce juste pour prévenir la vieillesse ! Je ne sais pas), vous retirez certains de vos propres gènes et ceux de votre femme. Certains se régénéreront en un nouvel individu. Cette nouvelle personnalité contiendra certainement les caractéristiques de vous deux. C'est une explication de l'hérédité (héritage) en biologie. Dans le monde de la programmation, l'héritage est l'héritage !

Tout d'abord, après avoir compris quelques principes vivants de l'héritage, j'aimerais voir si l'héritage des classes PHP n'est plus si mystérieux. Peut-être que ce n’est pas mystérieux en premier lieu parce que nous sommes nous-mêmes trop compliqués. Pour avoir un héritage, il doit y avoir une « racine ». Pour cette « racine », vous imaginez peut-être que si vous donnez naissance à un fils ou une fille dans le futur, ils obtiendront des « choses » (propriétés et méthodes). )" de vous, afin que vous Les "descendants" soient ceux qui possèdent toutes vos caractéristiques (racines). Décrivons comment cela s'exprime dans le langage orienté objet de PHP à travers la grammaire (cela ne peut pas être aussi direct que les humains, se marier, et votre progéniture sera produite après un certain temps)

1. Générer des "racines" Classe (classe parent ou classe de base)

Syntaxe :

class father{
}

1. Générer des « descendants » (sous-classes)

Syntaxe :

class son extends father{
}

Explication : La classe parent est juste une classe ordinaire. Si vous souhaitez avoir des descendants, il vous suffit d'ajouter le mot-clé extends après la classe ordinaire. De cette façon, votre sous-classe n'a que tous les attributs et méthodes de la classe parent. C'est en fait aussi simple que cela.

Faisons quelque chose de pratique. Après tout, définir une classe parent et une sous-classe dans l'héritage de classe PHP, c'est accomplir une certaine tâche ! La tâche ici est relativement monotone. Prenons l'exemple des gens. Les gens ont des noms (attributs) et doivent dormir et manger (méthodes). Utilisons cette tâche de base pour compléter les connaissances de cette section.

<?php   
class father{   
protected $name;   
function construct($name){   
$this->name=$name;   
}   
function destruct(){   
echo "<p>{$this->name}也是要死的<br/></p>";   
}   
//这个就是所谓的构造函数,用来初始化   
function go_to_sleeping(){   
echo "<p>{$this->name}想睡觉.</p>";   
}   
function eat(){   
echo "<p>{$this->name}想吃饭.</p>";   
}   
}   
class son extends father{   
function playing(){   
//小孩子会很调皮的,当然他也是要吃要睡的生物   
echo "<p>{$this->name}正在捣蛋...</p>";   
}   
}   
$your_father=new father("老爸");   
$your_father->go_to_sleeping();   
$your_father->eat();   
$my_son=new son(&#39;宝贝&#39;);   
$my_son->go_to_sleeping();   
$my_son->eat();   
$my_son->playing();   
?>   
<?php  
class father{  
protected $name;  
function construct($name){  
$this->name=$name;  
}  
function destruct(){  
echo "<p>{$this->name}也是要死的<br/></p>";  
}  
//这个就是所谓的构造函数,用来初始化  
function go_to_sleeping(){  
echo "<p>{$this->name}想睡觉.</p>";  
}  
function eat(){  
echo "<p>{$this->name}想吃饭.</p>";  
}  
}  
class son extends father{  
function playing(){  
//小孩子会很调皮的,当然他也是要吃要睡的生物  
echo "<p>{$this->name}正在捣蛋...</p>";  
}  
}  
$your_father=new father("老爸");  
$your_father->go_to_sleeping();  
$your_father->eat();  
$my_son=new son(&#39;宝贝&#39;);  
$my_son->go_to_sleeping();  
$my_son->eat();  
$my_son->playing();  
?>

Analyse : Dans notre premier exemple d'utilisation de l'héritage, nous utilisons le constructeur mentionné dans le constructeur PHP et les mots-clés dans l'encapsulation de la classe PHP. Si vous ne comprenez rien, allez voir ! Je ne veux pas en dire plus. Je ne voulais pas dormir à midi. Parlons de ce petit programme.

Dans le père de la classe, on définit des caractéristiques générales, comme le nom de la personne, ce dont elle a besoin pour manger et dormir, puis dans sa sous-classe (descendante) on définit une méthode personnalisée (jouer), Après tout, il existe des différences entre les gens. Nous utilisons le constructeur pour initialiser le nom, et bien sûr nous utilisons également le destructeur pour "détruire" l'objet, mais vous n'avez peut-être pas découvert qu'il n'y a pas de constructeurs et de destructeurs dans les sous-classes, donc la sous-classe hérite toutes les méthodes du parent, sinon comment pourriez-vous appeler $my_son->go_to_sleeping(); c'est l'héritage de la classe PHP ?

<?php
class my_class{
var $username="小鸡";
var $num=10;
function yingxiaoji(){
   //使用类里的全局变量
$num=$this->num;
$username=$this->username;
echo "我养了".$num."条".$username; 
} 
function jiegou(){
   //使用类中的函数时,用this直接引用
   $this->yingxiaoji();
   echo "全都卖了";
}
}
//php类的承 extends表示继承,但是php不允许同时继承多个基类
class my_class_extend extends my_class{
var $color="红色";
function mycolor(){
   $color=$this->color;
   $username=$this->username;
   echo ",这只".$username."是".$color;
}
}
$myname=new my_class(); //类的实例化
$myname->yingxiaoji();
echo "<br>";
//针对类中的变量重新赋值
$myname->username="小鸭子";
$myname->num="20";
$myname->yingxiaoji();
echo "<br>";
$myname->jiegou();
echo "<br>";
//初始化一个类的继承类
$myname_extend=new my_class_extend();
$myname_extend->jiegou();
$myname_extend->mycolor();
echo "<br>";
//由于是继承类,那么它的基类的属性全都有了,就可以直接给基类的变量传值
$myname_extend->username="小鸭子";
$myname_extend->num=100;
$myname_extend->color="黑色";
$myname_extend->jiegou();
$myname_extend->mycolor();
?>

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