抽象类
抽象类是一种特殊的类,用于定义某种行为,但其具体的实现需要子类来完成。例如,定义一个运动类,对于跑步这个行为,有基础跑、长距离跑、减速跑等多种跑步方式。此时,可以使用PHP提供的抽象类和抽象方法来实现,在定义时使用abstract关键字进行修饰,基本语法格式如下所示。
abstract class 类名 // 定义抽象类
{
public abstract function 方法名(); // 定义抽象方法
}
从上述语法可以看出,抽象类和抽象方法的声明都很简单,但是在使用abstract修饰抽象类或方法时还应注意以下6点。
① 抽象方法是只有方法声明而没有方法体的特殊方法。
② 含有抽象方法的类必须被定于成抽象类。
③ 抽象类中可以有非抽象方法、成员属性和常量。
④ 抽象类不能被实例化,只能被继承。
⑤ 子类实现抽象类中的抽象方法时,访问控制修饰符必须和抽象类中的一致或者更宽松。
⑥ 子类继承抽象类时必须实现抽象方法,否则也必须定义成抽象类由下一个继承类来实现。
为了大家更好地理解抽象类和抽象方法的使用,接下来通过代码来演示。
1 abstruct class Human
2 {
3 protected abstruct function eat();
4 }
5 abstruct class Man extends Human {}
6 class Boy extends Man
7 {
8 public function eat()
9 {
10 echo 'eat';
11 }
12 }
上述代码中,第1~4行定义了抽象类Human类,抽象类中使用protected访问控制修饰符定义了抽象方法,第5行定义了Man类继承了抽象类Human类,由于该类没有实现抽象方法,因此Man类也必须定义成抽象类,第8~11行实现了抽象方法的具体功能,在实现抽象方法时,需要保证访问控制修饰符与抽象方法的一致或更宽泛。