<?php
//interface关键字用于定义接口
interface ICanEat{
//接口里面的方法不需要方法的实现
public function eat($food) ;
}
//implemaents关键字用于表示类实现某个接口
class Human implements ICanEat{
//实现了某个接口之后,必须提供接口中定义的方法的具体实现
public function eat($food) {
echo "Human eating ".$food."<br/>";
}
}
class animal implements ICanEat{
//实现了某个接口之后,必须提供接口中定义的方法的具体实现
public function eat($food) {
echo "Animal eating ".$food."<br/>";
}
}
$obj=new Human();
$obj->eat('Apple'); $monkey = new Animal();
$monkey->eat('Banana'); //不能实例化接口
//$eatObj = new ICanEat(); //可以使用instanceof关键字来判断某个对象是否实现了某个接口
var_dump($obj instanceof ICanEat); function checkEat($obj) {
if($obj instanceof ICanEat) {
$obj->eat('food');
}else {
echo "The obj can't eat"."<br/>";
}
} checkEat($obj)."<br/>";
checkEat($monkey); //可以用extends让接口继承接口
interface ICanPee extends ICanEat{
public function pee();
}
//当类实现子接口时,父接口定义的方法也需要在这个类里面具体实现
class Human1 implements ICanPee{
public function pee() {}
public function eat($food){}
}

总结:

某个类实现(implements)了某个接口和继承(extends)了某个类的区别
--实现接口和继承类很类似,但是接口不能直接创建自己的对象
··如果创建了“会吃东西这个对象”,那么具体怎么吃根本不知道
--继承的父类必须有该方法的具体实现,子类可以重写父类的方法,也可以不重写
接口里面的方法是不需要具体实现的,只要定义了方法的名称和参数就可以了,
--具体的实现必须在实现类中定义
--一句话概括:类的方法必须有实现,接口的方法必须为空

多态:

多态:因为接口的方法实现可以有很多种,所以对于接口里面的定义的方法具体实习是多种多样的,这种特性我们称为多态

比如接口A有两个实现B和C,B和C对A里面定义的方法的实现可以是不同的,这种现象就是多态

对于上面接口的例子中

 //相同的一行代码,对于传入不同的接口的实现的对象的时候,表现是不同的,这就是多态
checkEat($obj);
checkEat($monkey);

最新文章

  1. php根据地址的经纬度查询周围的城市例子
  2. iOS UITableView 移除单元格选中时的高亮状态
  3. 第13章 Windows内存体系结构
  4. ThinkPHP之APP_DEBUG给我带来的问题
  5. c++错误修复 数据库无法打开 无法右击 run outtiime
  6. Flume NG中的Kafka Channel
  7. OC KVC总结
  8. java 常用的包 默认导入的包
  9. php部分--文件操作
  10. SVN&#183;最新使用教程总结
  11. oracle数据库使用心得之与SQL serve数据库的差异
  12. 用SERVLET进行用户名和密码验证
  13. ServletContext、ServletRequest和HttpSession的生命周期
  14. Tableau可视化绘图教程
  15. tomcat/Java指定加载jar包的路径
  16. 动态规划法(八)最大子数组问题(maximum subarray problem)
  17. saltstack自动化运维系列⑤之saltstack的配置管理详解
  18. hdu 3579 Hello Kiki【中国剩余定理】(模数不要求互素)(模板题)
  19. 关于“用VS2010的C++导入ADO导入不了,提示无法打开源文件msado15.tlh”的问题
  20. python语言中的数据类型之元组

热门文章

  1. javascript ArrayBuffer类型化数组和视图的操作
  2. 通过Intent 打开系统级应用
  3. 使用PHP配置文件
  4. HTTP协议状态代码和错误状态含义的解释
  5. UVA - 11014 Make a Crystal (莫比乌斯反演)
  6. Tomcat的安装与环境配置
  7. Cow Exhibition (背包中的负数问题)
  8. LeetCode 361. Bomb Enemy
  9. Eclipse之Web工程探究以及格式化
  10. bzoj 2744 [HEOI2012]朋友圈——补图!+匈牙利算法