Maison  >  Article  >  développement back-end  >  Comment implémenter un objet appelant la méthode de sa classe parent en PHP

Comment implémenter un objet appelant la méthode de sa classe parent en PHP

PHPz
PHPzoriginal
2023-04-04 09:12:371037parcourir

En PHP, un objet peut appeler ses propres méthodes et méthodes héritées des classes parents. Dans certains cas, nous souhaitons appeler la méthode de sa classe parent dans une méthode d'une sous-classe. Dans ce cas, nous devons utiliser la méthode de l'objet PHP pour appeler la méthode de la classe parent.

Discutons de la façon d'implémenter la méthode d'un objet pour appeler sa classe parent en PHP.

1. Appelez les méthodes de la classe parent via le mot-clé parent

En PHP, il existe un mot-clé parent qui peut être utilisé pour appeler des méthodes dans la classe parent. En utilisant le formulaire parent::method() dans la méthode de la sous-classe, vous pouvez appeler la méthode du même nom dans la classe parent. parent 可以用于调用父类中的方法。通过在子类方法中使用 parent::method() 的形式,就可以调用父类中的同名方法。

例如,我们有以下的父类和子类:

class Animal {
    public function eat() {
        echo 'Animal is eating...';
    }
}

class Cat extends Animal {
    public function eat() {
        parent::eat();
        echo 'Cat is eating...';
    }
}

在上面的代码中,Animal 类有一个 eat() 方法,而 Cat 类继承了 Animal 类并覆盖了 eat() 方法。在 Cat 类的 eat() 方法中,通过 parent::eat() 调用了父类的 eat() 方法。

调用 Cat 类的 eat() 方法,则会输出 Animal is eating...Cat is eating...

二、使用 $this->parent 调用父类方法

除了使用 parent 关键字,在 PHP 5.3 以上版本中,也可以通过 $this->parent 的形式来调用父类方法。

例如,我们可以将上面的 Cat 类改为以下形式:

class Cat extends Animal {
    public function eat() {
        $this->parent::eat();
        echo 'Cat is eating...';
    }
}

这里我们使用了 $this->parent 调用了父类 eat() 方法,并输出了 Cat is eating...

三、总结

通过使用 parent 关键字或 $this->parent,我们可以轻松地实现 PHP 中对象调用其父类的方法。

需要注意的是,当父类方法中存在可变参数时,例如:

class Animal {
    public function eat($food1, $food2) {
        echo "Animal is eating $food1 and $food2";
    }
}

class Cat extends Animal {
    public function eat($food1, $food2) {
        //error, 不可使用parent::eat($food1, $food2)
    }
}

在子类中,是不允许使用 parent::eat($food1, $food2)

Par exemple, nous avons les classes parent et enfant suivantes :

class Cat extends Animal {
    public function eat($food1, $food2) {
        parent::eat($food1, $food2);
        echo "Cat is eating $food1 and $food2";
    }
}
Dans le code ci-dessus, la classe Animal a une méthode eat(), et La classe Cat hérite de la classe Animal et remplace la méthode eat(). Dans la méthode eat() de la classe Cat, le eat()parent::eat() Méthode /code>. 🎜🎜Appeler la méthode eat() de la classe Cat affichera L'animal mange...Le chat mange.... 🎜🎜2. Utilisez $this->parent pour appeler la méthode de la classe parent 🎜🎜En plus d'utiliser le mot-clé parent, en PHP 5.3 ou supérieur, vous pouvez également utilisez $this->parent pour appeler la méthode de classe parent. 🎜🎜Par exemple, nous pouvons changer la classe Cat ci-dessus sous la forme suivante : 🎜rrreee🎜Ici, nous utilisons $this->parent pour appeler la classe parent méthode eat() et sortie Le chat mange.... 🎜🎜3. Résumé🎜🎜En utilisant le mot-clé parent ou $this->parent, nous pouvons facilement implémenter la méthode d'un objet en PHP appelant sa classe parent. 🎜🎜Il est à noter que lorsqu'il y a des paramètres variables dans la méthode de la classe parent, par exemple : 🎜rrreee🎜Dans la sous-classe, il n'est pas permis d'utiliser parent::eat($food1, $food2) code> pour appeler la méthode de la classe parent. Étant donné que les paramètres variables de la classe parent peuvent affecter le comportement de la sous-classe, PHP n'autorise pas cette méthode. Les paramètres doivent être redéfinis dans la méthode de la sous-classe. Par exemple : 🎜rrreee🎜Voici comment un objet en PHP appelle la classe parent. method Une brève introduction à la méthode, j'espère qu'elle aidera les lecteurs à comprendre comment les objets PHP appellent les méthodes de la classe parent. 🎜

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