Class类的抽象实现,也属于父子类中的一种,
抽象是介于基础类和接口类的一个升级版,
接口类中父类不能具体化成员函数内容,只能定义一些函数框架,然后让子类去实现。
而基础类中,父类不能强迫子类一定要重写某些成员函数。
而抽象类就是为了解决这两种情况,并将其融合在了一起,
同样的,被声明为抽象类的Class,不能直接被new实例化,而是需要使用extends关键字创建对应的子类。
其语法格式如下:
abstract class 抽象类名 {
abstract 控制权限 修饰符 function 方法名();
控制权限 修饰符 function 方法名() {}
}
当我们class基础类中,只要有一个成员函数使用了abstract关键字,该类就表示为抽象类,同时class关键字前面也需要加上abstract关键字。
具体案例代码如下:
<?php
# 抽象父类
abstract class Test {
# 要求子类必须实现这些方法
abstract public function Get();
abstract public function Post($str);
# 普通方法(非抽象方法)
public function Dump() { echo '不强迫子类重写'; }
}
# 子类
class Demo extends Test {
# 具体化父抽象强迫实现的方法
public function Get() { echo '粑粑我实现了'; }
public function Post($str) { echo '粑粑我实现了'; }
}
# Demo
$obj = new Demo();