所谓抽象类就是一个类是抽象化的,再进一步解释就是这个类不能被实例化,只是一个抽象的类;那么再进一步白话型的解释就是这个类只是一个壳子,但是你要继承它还就必须去把这个壳子里的东西用上且要一模一样才行。
要把类进行抽象化,需要使用到关键字abstract,这个在Java中也是一样的,说白了,即我们需要不同的人在实现不一样的功能,但是大体的框架又要一样,这个时候可以使用抽象类,那么简单除暴的代码实现如下:
abstract class Animal
{
public $name;
protected $age;
abstract public function eat($what);
}
class Cat extends Animal
{
public function eat($what){
echo "我正在吃".$what."
";
}
}
class Dog extends Animal
{
public function eat($what){
echo "我正在吃".$what."
";
}
}
$ani1 = new Cat();
$ani1->eat("鱼");
$ani2 = new Dog();
$ani2->eat("骨头");
?>
但是在使用中需要注意一下几点:
如果一个类使用abstract来修饰,则该类就是一个抽象类,如果一个方法被abstract修饰,则该方法就是抽象方法,那么抽象方法就不能有方法体;
抽象类不能被实例化;
抽象类不一定包含abstract方法,也就是说抽象类中可以没有abstract方法;
一单一个类中包含了abstract方法,那么这个类也必须声明为abstract类;
如果一个类继承了某个抽象类,则它必须实现该抽象类中的所有抽象方法,除非它自己也声明为抽象类;
所以大家在学习的时候一定要多练习和多思考,毕竟这个对于新手还算有点纠结的,对于老鸟来说那就是个菜。