浅析php中抽象类和接口的概念以及区别


Posted in PHP onJune 27, 2013
//抽象类的定义:
abstract class ku{  //定义一个抽象类
  abstract function kx();
  ......
}
function aa extends ku{
  //实现抽象类的方法
  function kx(){
    echo 'sdsf';
  }
}
//使用方法
$aa=new aa;
$aa->kx();
//1.定义一些方法,子类必须完全实现这个抽象中所有的方法
//2.不能从抽象类创建对象,它的意义在于被扩展
//3.抽象类通常具有抽象方法,方法中没有大括号
//4.抽象方法不必实现具体的功能,由子类来完成
//5.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义
//6.抽象类的方法可以有参数,也可以为空
//7.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数
//////////////////////////////接口类的定义:
interface Shop{
      public   function buy($gid);
      public   function sell($gid);
      abstract function view($gid);
}
//如果要使用接口,必须定义接口类中的所以方法少一个都不可以(abstract除外)。
//这样如果在一个大项目中不管别人怎么去做下面的方法,但是他必须实现本接口中的所有方法才可以!
//例:实现上面的接口的一种方法
class BaseShop implements Shop{
   public function buy($gid){
      echo '你购买了ID为 :' . $gid . '的商品';
   }
   public function sell($gid){
      echo '你购卖ID为 :' . $gid . '的商品';
   }
   public function view($gid){
      echo '你浏览了ID为 :' . $gid . '的商品';
   }
}
//接口的多重继承示例:
<?php
interface staff_i1{ //接口1
  function setID();
  function getID();
}
interface staff_i2{ //接口2
  function setName();
  function getName();
}
class staff implements staff_i1,staff_i2{
  private $id;
  private $name;
  function setID($id){
    $this->id = $id;
  }
  function getID(){
    return $this->id;
  }
  function setName($name){
    $this->name = $name;
  }
  function getName(){
    return $this->name;
  }
  function otherFunc(){ //这是一个接口中不存在的方法
    echo “Test”;
  }
}
?>

他们的不同点:
1。抽象类中可以有非抽象的方法而接口中只能够有抽象的方法!
2。一个类可以继承多个接口,而一个类只能继承一个抽象类!
3。接口的使用方式通过implements关键字进行,抽象类则是通过继承extends关键字进行!
PHP 相关文章推荐
PHP在特殊字符前加斜杠的实现代码
Jul 17 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
PHP安全防范技巧分享
Nov 03 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
php字符串分割函数用法实例
Mar 17 PHP
php图像处理类实例
Jul 28 PHP
php析构函数的简单使用说明
Aug 24 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
php5.x禁用eval的操作方法
Oct 19 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
PHP+MySql实现一个简单的留言板
Jul 19 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 PHP
领悟php接口中interface存在的意义
Jun 27 #PHP
CURL状态码列表(详细)
Jun 27 #PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 #PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 #PHP
深入解析phpCB批量转换的代码示例
Jun 27 #PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 #PHP
Memcached常用命令以及使用说明详解
Jun 27 #PHP
You might like
php对图像的各种处理函数代码小结
2013/07/08 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
露营世界:Camping World
2017/02/02 全球购物
精伦电子Java笔试题
2013/01/16 面试题
授权委托书范本
2014/04/03 职场文书
公务员考察材料范文
2014/12/23 职场文书
秦兵马俑导游词
2015/02/02 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
docker-compose部署Yapi的方法
2022/04/08 Servers
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis