Maison >développement back-end >tutoriel php >Héritage orienté objet PHP

Héritage orienté objet PHP

不言
不言original
2018-06-06 10:10:311565parcourir

Cet article présente principalement l'héritage orienté objet en PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Héritage

.

Définition

La sous-classe hérite de toutes les classes parentes - propriétés et méthodes publiques et protégées.

Utilisez le mot-clé extends héritage, une classe en intègre une autre, et ne peut en hériter que d'une.

Termes professionnels associés

子类、父类、基类、超类、派生类

Sous-classe, classe dérivée——> Classe qui hérite de la classe de base

Classe parent, classe de base, super classe fait référence ; — —> Classe héritée.

Exemple

<?php

class Father
{
    public $a = &#39;public&#39;;
    protected $b = &#39;protected&#39;;
    private $c = &#39;private&#39;;

    public function func1()
    {
        echo &#39;This is public function&#39;,&#39;<br/>&#39;;
    }

    protected function func2()
    {
        echo &#39;This is protected function&#39;,&#39;<br/>&#39;;
    }

    private function func3()
    {
        echo &#39;This is private function&#39;,&#39;<br/>&#39;;
    }
}

// 继承父类
class Child extends Father
{
    // 子类中调用继承来的方法
    public function test()
    {
        $this -> func1();
        $this -> func2();
        //$this -> func3();  私有方法不可以调用
    }
}

// 实例化子类
$son = new Child();


// 尝试调用属性
echo $son -> a,&#39;<br/>&#39;;
//echo $son->b;   不能直接输出b
//echo $son -> c; 继承都没继承,当然不能输出


// 尝试调用方法
//$son -> func1();
//$son -> func2();   不能在类外调用func2
//$son -> func3();   继承都没继承,当然不能调用

// 间接调用继承自父类的普通方法
$son -> test();

Réécrire

Définition :

1) Hériter de la méthode de la classe parent et la définir dans la sous-classe Méthode avec le même nom que la classe parent , et a le même nombre de paramètres

2) Lorsque la sous-classe remplace la méthode dans la classe parent ; , PHP n'appellera pas la classe parent Méthodes remplacées dans la classe

3) L'appel de la méthode de la classe parent dépend de la sous-classe.

4) Lors de l'implémentation de la couverture de méthode, le modificateur d'accès peut être différent , mais la portée d'accès de sous-classe doit être supérieure ou égale au parent portée d'accès à la classe .

Utiliser :

parent::    访问父类中被重写的属性和方法

Exemple

<?php

class Father
{
    public function shuo($num)
    {
        echo &#39;a a o o&#39;;
    }
}


class Son extends Father
{
    public function shuo($num)
    {
        // 调用父类中被重写的方法
        // parent::shuo($num);

        echo &#39;Hello World&#39;;
    }

    public function test($num)
    {
        parent::shuo($num);
    }
}

// 实例化子类
$son1 = new Son();
$son1 -> shuo(1);   // Hello World
$son1 -> test(1);   // a a o o

mot-clé final

Si la méthode dans la classe parent est déclarée Si c'est final, les sous-classes ne peuvent pas remplacer cette méthode.

Si une classe est déclarée finale, elle ne peut pas être héritée.

Exemple

<?php

class Father
{
    final public function test()
    {
        echo &#39;hello&#39;;
    }
}

class Son extends Father
{
    public function test()
    {
        echo &#39;你好&#39;;
    }
}

// 实例化子类
$son1 = new Son();

$son1 -> test();  // 报错,函数不能被重写

Recommandations associées :

Surcharge orientée objet php

Objet php -encapsulation orientée

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