ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
面向对象的抽象方法和抽象类: 所有子类必须继承父类的方法,但是继承的时候具有不确定性,必须对父类的方法进行重写,这个时候我们就把这个被重写的方法定义成抽象方法,抽象方法不需要有方法体。这个类也就是抽象abstruct。 抽象类是一种不能被实例化的类,只能作为其他类的父类来使用! 如果一个类中,有一个方法是抽象的,则这个类就是抽象类。 如果一个类是抽象类,则这个类必须使用abstract修饰。 抽象类是一种特殊的类,接口是一种特殊的抽象类,多态就要使用到抽象类或接口! 测试代码如下: abstract class A{ public $name = 'fxxy' abstract function show(); } //$a = new A();//会报错 class B extends A{ public function show(){ echo '继承父类的抽象方法并进行重写'; } } $b = new B(); $b->show(); 抽象类和普通类相似,包含成员变量和成员方法,两者的区别在于:抽象类至少要包含一个抽象方法,抽象方法没有方法体,其功能的实现只能在子类中完成。 代码如下: //定义一个名为【交通工具】的类 abstract class Vehicle{ private $name;//名称 private $price;//价格 private $brand;//品牌 abstract function run(); } class Truck extends Vehicle{ function run(){ echo '卡车在路上跑'; } } class Plane extends Vehicle{ public function run(){ echo '飞机在天上飞'; } } $plane = new Plane; $plane->run(); 注意:抽象方法一定不能带方法体!