PHP面向对象程序设计之接口的继承定义与用法详解


Posted in PHP onDecember 20, 2018

本文实例讲述了PHP面向对象程序设计之接口的继承定义与用法。分享给大家供大家参考,具体如下:

在PHP5中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。要注意只有接口和接口之间使用 继承关键字 extends。类实现接口必须实现其抽象方法,使用实现关键字 implements

下面的这个例子定义接口User,User有两个抽象方法 getName和setName。 又定义了接口VipUser, 继承自User接口,并增加了和折扣相关的方法getDiscount。

最后定义了类 Vip ,实现了VipUser接口。并实现了其中的三个方法。

<?php
interface User {
  public function getName();
  public function setName($_name);
}
interface VipUser extends User {
  public function getDiscount(); //添加了获得折扣的抽象方法.
}
class Vip implements VipUser {
  private $name;
  private $discount = 0.8;// 定义折扣变量
  public function getName(){ //实现getName方法
    return $this->name;
  }
  public function setName($_name){//实现setName方法
    $this->name = $_name;
  }
  public function getDiscount(){//实现折扣方法.
    return $this->discount;
  }
}
?>

接口可以实现多继承,这是接口很特殊的地方。注意下面的代码和用法。

<?php
interface User {
  public function getName();
  public function setName($_name);
}
interface Administrator {
  public function setNews($_news);
}
//注意这里的多继承.
interface NewsAdministrator extends User,Administrator{
}
class NewsAdmin implements NewsAdministrator { //实现接口
  public function getName(){
    //.........
  }
  public function setName($_name){
    //.........
  }
  public function setNews($_news){
    //.........
  }
}
?>

抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交付给具体能被实例化的类去处理。

<?php
interface User {
  public function getName();
  public function setName($_name);
}
//AbstractNormalUser 只实现了 User接口中的一个方法,
abstract class AbstractNormalUser{
  protected $name;
  public function getName(){
    return $this->name;
  }
}
//这里实现了接口的另外一个方法.
class NormalUser extends AbstractNormalUser {
  public function setName($_name){
    $this->name = $_name;
  }
}
$normalUser = new NormalUser();
$normalUser->setName("tom");
echo "name is ".$normalUser->getName();
?>

运行结果:

name is tom

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
在同一窗体中使用PHP来处理多个提交任务
Oct 09 PHP
综合图片计数器
Oct 09 PHP
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
PHP 数组教程 定义数组
Oct 23 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 PHP
php生成短网址示例
May 05 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 PHP
PHP控制循环操作的时间
Apr 01 PHP
PHP面向对象程序设计之多态性的应用示例
Dec 19 #PHP
PHP自定义错误处理的方法分析
Dec 19 #PHP
PHP异常类及异常处理操作实例详解
Dec 19 #PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
Dec 18 #PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 #PHP
PHP获取星期几的常用方法小结
Dec 18 #PHP
php往mysql中批量插入数据实例教程
Dec 12 #PHP
You might like
ini_set的用法介绍
2014/01/07 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
python 中文乱码问题深入分析
2011/03/13 Python
django实现分页的方法
2015/05/26 Python
pytorch标签转onehot形式实例
2020/01/02 Python
Python中zip函数如何使用
2020/06/04 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
UML设计模式笔试题
2014/06/07 面试题
建筑个人求职信范文
2014/01/25 职场文书
国家助学金获奖感言
2014/01/31 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
社区健康教育工作方案
2014/06/03 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
民主评议党员总结
2014/10/20 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
十二生肖观后感
2015/06/12 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
python绘制云雨图raincloud plot
2022/08/05 Python