抽象类
在正常定义类前面加上关键字:abstract就成为了抽象类。抽象类无法被实例化,它可以用来规范一些类的共同特性,需要这些规范的类就继承这个抽象类。
abstract class A{
}
抽象方法
抽象方法是一个没有方法体(也不含大括号)的方法定义"头"而已。在正常定义普通方法的基础上,前面加上abstract。
abstract function f1($x1,$y,$m);
抽象方法细节注意:
- 抽象类的子类必须实现抽象类内全部的抽象方法。
- 配合抽象类实现对子类的规范,如果一个方法定义为抽象方法,这个类必须为抽象类,但类为抽象类,但类中不一定有抽象方法。
需求案例:
定义游戏中的"野怪"类,所有野怪都基于这个类。
abstract class guai{
protected $blood = 100;//血量
protected $distance = 30;//开始发起攻击的距离
protected $function attack();//攻击行为
}
//定义一个蛇怪,基于野怪这个抽象类,攻击一次自身掉一滴血。
class snakeGuai extends guai{
function attack{
echo "吐火攻击";
//自身减血
$this->blood--;
}
}
$o1 = new snakeGuai();
$o1->attack();