PHP 继承怎么写

你有没有遇到过这样的情况:写代码时发现两个功能很像,只是多了一两个小细节不一样?比如你要做一个“学生管理系统”,先写了一个“人员”的基础类,里面有姓名、年龄这些通用信息,后来要做“老师”类,老师也有姓名和年龄,还要加个“教课程”的方法,难道要把“人员”类的代码再抄一遍吗?

这时候PHP的“继承”就能帮上大忙——它就像复制了一份基础模板,你只需要在模板上改改、加加内容,不用从头写重复的代码。

PHP 继承怎么写

先搞懂两个核心角色

在PHP的继承里,有两个简单的称呼:

  • 父类:就是刚才说的基础模板,也叫“基类”,放通用的属性和方法。比如“人员”类就是父类,有$name(姓名)属性,还有sayHello()(自我介绍)方法。
  • 子类:就是要修改或扩展的新类,也叫“派生类”,会继承父类的所有属性和方法,还能加自己的新内容。比如“老师”“学生”都可以当“人员”的子类。

举个生活化的例子:父类是“水果”,有“颜色”属性和“吃”的方法;子类是“苹果”,它会自动继承“颜色”和“吃”,还能加自己的“品种”属性。

怎么写继承?就用一个关键字

PHP里写继承特别简单,只要用extends关键字就行,格式就是“子类 extends 父类”。我们用代码来演示,保证一看就懂:

`php

// 1. 先写父类:人员

class Person {

// 通用属性:姓名、年龄

public $name;

public $age;

// 父类的方法:自我介绍

public function sayHello() {

echo "大家好,我是{$this->name},今年{$this->age}岁。";

}

}

// 2. 写子类:老师,继承Person

class Teacher extends Person {

// 子类加的专属属性:教的课程

public $subject;

// 子类的专属方法:上课

public function teach() {

echo "我教{$this->subject}。";

}

}

`

你看,子类Teacher虽然没写$name$age,但它已经从父类Person那里继承了,直接就能用。

子类还能“改”父类的方法?

如果父类的某个方法,在子类里要换个说法或加内容,不用重写整个父类,直接在子类里“重写”方法就行。比如老师的自我介绍要加“我是老师”,就可以这么写:

`php

class Teacher extends Person {

public $subject;

// 重写父类的sayHello方法

public function sayHello() {

// 先调用父类原来的自我介绍,再加自己的内容

parent::sayHello();

echo "我是一名老师,教{$this->subject}。";

}

public function teach() {

echo "我教{$this->subject}。";

}

}

`

这里的parent::就是专门用来调用父类方法的,相当于“回到父类那里,取原来的内容用一下”,比自己抄一遍父类代码省力气多了。

继承的小规则要注意

不是所有内容都能随便改:父类里用private修饰的属性或方法,子类是看不到也改不了的,就像父类的私密日记,子类拿不到;只有public(公开的)和protected(受保护的,子类也能访问)的内容,子类才能用或改。

最后用个实际的例子测试下:

`php

// 实例化一个老师对象

$teacher = new Teacher();

$teacher->name = "李老师";

$teacher->age = 35;

$teacher->subject = "数学";

// 输出:大家好,我是李老师,今年35岁。我是一名老师,教数学。

$teacher->sayHello();

// 输出:我教数学。

$teacher->teach();

`

是不是很清楚?继承的核心就是“复用父类的代码,只改需要改的部分”,写代码时能少很多重复劳动,还不容易出错。

上一篇 Swift语言在移动应用开发领域的核心优势与实用特性科普