Maison développement back-end tutoriel php En PHP, les sous-classes surchargent les méthodes de la classe parent (parent :: nom de la méthode)

En PHP, les sous-classes surchargent les méthodes de la classe parent (parent :: nom de la méthode)

Jun 02, 2018 am 10:08 AM
parent php

Cet article présente principalement le contenu pertinent des sous-classes surchargeant les méthodes de classe parent (parent::nom de la méthode) en PHP. Toutes sont partagées avec tout le monde pour votre référence

La surcharge ne peut pas être définie dans les fonctions PHP avec le même. name inclut également les méthodes portant le même nom qui ne peuvent pas être définies dans la même classe, il n'y a donc pas de surcharge de méthode. Une méthode portant le même nom que la classe parent peut être définie dans une sous-classe uniquement, car les méthodes de la classe parent existent déjà dans la sous-classe, donc les méthodes héritées de la classe parent peuvent être remplacées dans la sous-classe.

La méthode pour remplacer la classe parent dans une sous-classe consiste à écraser les méthodes héritées de la classe parent dans la sous-classe. Les méthodes de la classe parent ne peuvent-elles pas être utilisées directement si elles sont héritées par. la sous-classe ? Pourquoi devons-nous le surcharger ? Parce qu'il y a certaines situations que nous devons couvrir. Par exemple, il existe une classe "Bird", dans laquelle est définie la méthode générale "Fly" pour les oiseaux. Prendre la classe "autruche" comme sous-classe héritera de la méthode "voler", mais dès que la méthode "voler" dans la classe "autruche" sera appelée, l'autruche s'envolera. Bien que les autruches ne puissent pas voler, d'autres caractéristiques ont les caractéristiques des « oiseaux ». Par conséquent, lors de la déclaration de la classe « autruche », vous pouvez toujours hériter de la classe « oiseau », mais vous devez ajouter la classe « oiseau » à la classe « autruche ». . Pour réécrire la méthode "volante" héritée de la classe, vous devez surcharger la méthode de la classe parent dans la sous-classe.

Dans l'exemple suivant, la classe Person déclarée a une méthode "speak". La classe Student peut directement utiliser la méthode "speak" après avoir hérité de la classe Person. Cependant, la méthode « speak » de la classe Person ne peut prononcer que ses propres attributs de membre, tandis que la classe Student étend la classe Person et ajoute plusieurs nouveaux attributs de membre. Le code est le suivant :

<?php
class Person{
protected $name;
protected $sex;
protected $Wage;
function __construct($name="",$sex="男",$age=1){
$this ->name = $name;
$this ->sex = $sex;
$this ->age = $age;
}
//在人类中声明一个通用的说话方法,介绍一下自己
function say(){
echo "我的名字:".$this-> name.",性别:".$this ->sex.",年龄:".$this ->age."。<br>";
}
}
//声明一个学生类,使用extends关键字扩展(继承)person类
class Student extends Person {
private $school; //在学生类中声明一个所在学校school的成员属性
//覆盖父类中的构造方法,在参数列表中添加一个学校属性,用来创建对象并初始化成员属性
function __construct($name="",$sex="男",$age=1,$school=""){
$this ->name = $name;
$this ->sex = $sex;
$this ->age = $age;
$this ->school = $school;
}
function study(){
echo $this ->name."正在".$this ->school."学习<br>";
}
//定义一个和父类中同名的方法,将父类中的说话方法覆盖并重写,多说出所在的学校名称
function say(){
echo "我的名字:".$this ->name.",性别:".$this ->sex.",年龄:".$this ->age.",在".$this ->school."学校上学<br>";
}
}
$student= new Student("张三","男",20,"edu"); //创建一个学生对象,并传给一个学校名称参数
$student -> say(); //调用学生类中覆盖父类的说话方法
?>
Copier après la connexion

Le résultat de sortie après l'exécution du programme est :

Je m'appelle : Zhang San, sexe : masculin, mon âge est : 20 ans, j'étudie à l'école edu

en PHP, fournit la fonction d'appeler la méthode surchargée de la classe parent dans la méthode surchargée de la sous-classe. De cette façon, dans les méthodes remplacées par la sous-classe, vous pouvez continuer à utiliser les méthodes héritées et remplacées de la classe parent, puis ajouter de nouvelles fonctions si nécessaire. Le format de l'appel consiste à utiliser "parent : nom de la méthode" pour appeler la méthode surchargée de la classe parent dans la méthode surchargée de la sous-classe. Modifiez le code dans l'exemple ci-dessus, utilisez "parent::__construct()" dans le constructeur remplacé de la sous-classe pour appeler le constructeur remplacé de la classe parent et ajoutez un attribut de membre supplémentaire pour le membre nouvellement étendu de la sous-classe. code. Utilisez "parent::say()" dans la méthode say() substituée dans la sous-classe pour appeler la méthode say() substituée dans la classe parent, puis ajoutez la fonction de sortie des attributs membres de la sous-classe.

Le code est le suivant :

<?php
class Person{
protected $name;
protected $sex;
protected $Wage;
function __construct($name="",$sex="男",$age=1){
$this ->name = $name;
$this ->sex = $sex;
$this ->age = $age;
}
//在人类中声明一个通用的说话方法,介绍一下自己
function say(){
echo "我的名字:".$this-> name.",性别:".$this ->sex.",年龄:".$this ->age."。<br>";
}
}
//声明一个学生类,使用extends关键字扩展(继承)person类
class Student extends Person {
private $school; //在学生类中声明一个所在学校school的成员属性
//覆盖父类中的构造方法,在参数列表中添加一个学校属性,用来创建对象并初始化成员属性
function __construct($name="",$sex="男",$age=1,$school=""){
//调用父类中被覆盖的构造方法,为从父类中集成过来额出行赋初值
parent::__construct($name,$sex,$age);
$this ->school = $school;
}
function study(){
echo $this ->name."正在".$this ->school."学习<br>";
}
//定义一个和父类中同名的方法,将父类中的说话方法覆盖并重写,多说出所在的学校名称
function say(){
parent::say(); //调用父类中被本方法覆盖掉的方法
echo "在".$this ->school."学校上学<br>";
}
}
$student= new Student("张三","男",20,"edu"); //创建一个学生对象,并传给一个学校名称参数
$student -> say(); //调用学生类中覆盖父类的说话方法
?>
Copier après la connexion

Le résultat de sortie de l'exemple ci-dessus est le même que celui de l'exemple précédent , mais dans ce cas, il est beaucoup plus simple d'appeler directement la méthode remplacée dans la classe parent de la sous-classe. De plus, lorsqu'une sous-classe substitue une méthode d'une classe parent, il faut noter que les autorisations d'accès des méthodes substituées dans la sous-classe ne doivent pas être inférieures aux autorisations d'accès des méthodes substituées de la classe parent. Par exemple, si l'autorisation d'accès dans la classe parent est protégée, l'autorisation de la méthode remplacée dans la classe enfant doit être protégée ou publique.

Recommandations associées :

La méthode de surcharge de la sous-classe de la classe parent en PHP, méthode d'annotation php, méthode de synchronisation php, autorisateur du système php

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

CakePHP travaillant avec la base de données CakePHP travaillant avec la base de données Sep 10, 2024 pm 05:25 PM

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

See all articles