学科分类
目录
PHP基础

抽象类

抽象类是一种特殊的类,用于定义某种行为,但其具体的实现需要子类来完成。例如,定义一个运动类,对于跑步这个行为,有基础跑、长距离跑、减速跑等多种跑步方式。此时,可以使用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行实现了抽象方法的具体功能,在实现抽象方法时,需要保证访问控制修饰符与抽象方法的一致或更宽泛。

点击此处
隐藏目录