Home > Backend Development > PHP Problem > How to inherit parent class methods in php

How to inherit parent class methods in php

coldplay.xixi
Release: 2023-03-06 13:40:02
Original
3479 people have browsed it

php inherits the parent class method: use the Student class to inherit the Person class, the code is [class Student extends Person{private $school;function __construct($name="",$sex="male"}].

How to inherit parent class methods in php

php inherits the parent class method:

Functions with the same name cannot be defined in PHP, including functions that cannot be renamed with the same name. A method with the same name is defined in a class, so there is no method overloading. In a subclass alone, a method with the same name as the parent class can be defined, because the method of the parent class already exists in the subclass, so in the subclass You can override methods inherited from the parent class.

The method of overriding the parent class in a subclass is to override the method inherited from the parent class in the subclass. The methods in the parent class are overridden by the subclass. Can't we use it directly if we inherit it? Why do we need to overload it? Because there are some situations that we must cover. For example, there is a "bird" class, in which the bird's general method "fly" is defined. As its subclass, the "ostrich" class will inherit the "fly" method, but as soon as the "fly" method in the "ostrich" class is called, the ostrich will fly away. Although ostriches cannot fly , but other characteristics have the characteristics of "birds", so when declaring the "ostrich" class, you can still inherit the "bird" class, but the "flying" inherited from the "bird" class must be added to the "ostrich" class "Method rewriting requires overloading the method in the parent class in the subclass.

In the following example, there is a "speak" method in the declared Person class. After the Student class inherits the Person class, it can directly Use the "speak" method. However, the "speak" method in the Person class can only speak its own member attributes, while the Student class extends the Person class and adds several new member attributes. The code is as follows:

<?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(); //调用学生类中覆盖父类的说话方法
?>
Copy after login

The output result after running the modified program is:

我的名字叫:张三,性别:男,我的年龄是:20,在..学校上学
Copy after login

In PHP, it provides the function of calling the overridden method of the parent class in the overloaded method of the subclass. In this way, you can In the method overridden by the subclass, continue to use the methods inherited and overridden from the parent class, and then add some new functions as required. The calling format is to use "parent: method name" in the overloaded method of the subclass Call the overridden method in the parent class. Modify the code in the above example, use "parent::__construct()" in the constructor overridden by the subclass to call the overridden constructor in the parent class, and add one more Code for initializing newly extended member attributes in the subclass. Use "parent::say()" in the say() method overridden in the subclass to call the overridden say() method in the parent class, and then add the output The function of subclass member attributes.

The code is as follows:

<?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(); //调用学生类中覆盖父类的说话方法
?>
Copy after login

The output result of the above example is the same as the previous example, but in this case, it is passed directly in the subclass It is much simpler to call overridden methods in the parent class. In addition, when a subclass overrides a method of a parent class, it must be noted that the access permissions of the methods overridden in the subclass must not be lower than the access permissions of the overridden methods of the parent class. For example, if the access permission in the parent class is protected, then the permission of the method overridden in the child class must be protected or public.

Related free learning recommendations: php programming (video)

The above is the detailed content of How to inherit parent class methods in php. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template