抽象类
抽象类
·接口里面的方法都是没有实现的,而类里面的方法都是有实现的
·有没有一种形态,允许类里面的一部分方法不实现呢?
当接口中的某些方法对于所有的实现类都是一样的实现方法,只有部分方法需要用到多态的特性
实例
人和动物吃东西是不同的,但是呼吸是相同的,不需要为人和动物分别实现呼吸的功能
1 <?php 2 //abstract关键字用于定义抽象类 3 abstract class ACanEat{ 4 //在抽象方法前面添加abstract关键字可以表明这个方法是抽象方法不需要具体实现的方法 5 abstract public function eat($food); 6 7 //抽象类中可以包含普通的方法,有方法的具体实现 8 public function breath() { 9 echo "Breath use the air"."<br/>"; 10 } 11 } 12 //继承抽象类的关键字是extends 13 class Human extends ACanEat{ 14 //继承抽象类的子类需要实现抽象类的中定义的抽象方法 15 public function eat($food) { 16 echo "Human eating ".$food."<br/>"; 17 } 18 } 19 20 class Animal extends ACanEat{ 21 public function eat($food) { 22 echo "Animal eating ".$food."<br/>"; 23 } 24 } 25 26 $man = new Human(); 27 $man->eat('apple'); 28 $man->breath(); //和Animal类共用了抽象类中的抽象方法 29 $monkey = new Animal(); 30 $monkey->eat('banana'); 31 $monkey->breath();
总结:
抽象类是介于接口和类之间的一种状态,可以有一部分可以实现,一部分不能实现