深入分析php中接口与抽象类的区别

 更新时间:2013年06月08日 08:57:09   作者:  
本篇文章是对php中接口与抽象类的区别进行了详细的分析介绍,需要的朋友参考下
接口和抽象类真的很难区分开,引文他们很相似,方法都没有定义逻辑,都是供子类是想或继承的。区分二者只要记住一句话:接口是规范,类是实现。接口的目的是定义一个规范,大家都遵守这个规范。

也就是说,从目的上可以很清楚地区分接口和抽象类。那么还是有疑问,既然有了借口,那么为什么还必须有抽象类呢?

加入我们要定义一个名为Animal的类,该类有两个子集Dog和Cattle,二者都有两个方法:run()方法和speak()方法。

假定Dog和Cattle的“跑(run)”是相同的,因此run()方法具有相同的业务逻辑;而“叫(speak)”是不同的,因此speak()方法的业务逻辑不同。而且,有一个IAnimal的接口规定必须有这两个方法,这意味着Animal类必须实现这两个方法,同样,Dog和Cattle这两个子类也必须有这两个方法吗,那么我们可以这样定义:
复制代码 代码如下:

<?php
interface IAnimal{
 public function run();
 public function speak();
}
class Animal implements IAnimal{
 public function run(){
  //在这里可以添加一些相同的run逻辑
  return "same run<br />";
 }
 public function speak(){
  //这里可以添加一些相同的speak逻辑
  return "same speak<br />";
 }
}
class Dog extends Animal{
 public function speak(){
  //在这里可以添加一些Dog逻辑
  return "Dog speak<br />";
 }
}
class Cattle extends Animal{
 public function speak(){
  //在这里可以添加一些Cattle逻辑
  return "Cattle speak<br />";
 }
}
$oDog=new Dog();
echo($oDog->run());
echo($oDog->speak());
$oCattle=new Cattle();
echo($oCattle->run());
echo($oCattle->speak());
?>

相关文章

  • PHP简单数据库操作类实例【支持增删改查及链式操作】

    PHP简单数据库操作类实例【支持增删改查及链式操作】

    这篇文章主要介绍了PHP简单数据库操作类实例,支持增删改查及链式操作,非常适合小型项目的开发使用,末尾还提供了完整实例的下载地址,需要的朋友可以参考下
    2016-10-10
  • 详解PHP数组赋值方法

    详解PHP数组赋值方法

    这篇文章主要介绍了详解PHP数组赋值方法,文章就怎样创建数组、怎样给PHP数组赋值,文章都做了详细的介绍和讲解,希望对大家有帮助。
    2015-11-11
  • PHP的JSON封装、转变及输出操作示例

    PHP的JSON封装、转变及输出操作示例

    这篇文章主要介绍了PHP的JSON封装、转变及输出操作,结合实例形式分析了php常见的json封装、解析、打印输出相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • PHP简单实现二维数组赋值与遍历功能示例

    PHP简单实现二维数组赋值与遍历功能示例

    这篇文章主要介绍了PHP简单实现二维数组赋值与遍历功能,涉及php数组的简单赋值、遍历、运算、读取等操作使用技巧,需要的朋友可以参考下
    2017-10-10
  • 两千行代码的PHP学习笔记汇总

    两千行代码的PHP学习笔记汇总

    这篇文章主要介绍了两千行代码的PHP学习笔记汇总,由黑眼诗人整理汇总,包括了PHP学习中各类常见的技巧,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • PHP内存使用情况如何获取

    PHP内存使用情况如何获取

    这篇文章主要介绍了PHP内存使用情况如何获取,感兴趣的小伙伴们可以参考一下
    2015-10-10
  • php中神奇的fastcgi_finish_request

    php中神奇的fastcgi_finish_request

    当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法。按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。
    2011-05-05
  • php简单smarty入门程序实例

    php简单smarty入门程序实例

    这篇文章主要介绍了php简单smarty入门程序,实例分析了smarty模板的配置与使用技巧,需要的朋友可以参考下
    2015-06-06
  • 利用PHP如何实现Socket服务器

    利用PHP如何实现Socket服务器

    想要构建聊天应用,或者甚至是游戏吗?那么,socket服务器将成为你迈出的第一步。一旦你了解了创建服务器的基本功能,那么后续的优化步骤就会变得同样简单,需要的朋友可以参考下
    2015-09-09
  • PHP中异常处理的一些方法整理

    PHP中异常处理的一些方法整理

    这篇文章主要介绍了PHP中异常处理的一些方法整理,尽管PHP并不能说是一种很优秀的语言,但其相关技术依然在不断得到改进,需要的朋友可以参考下
    2015-07-07

最新评论