PHP

类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引入了类的接口技术。

接口的使用使用implements关键字,而对抽象类使用的是extends继承关键字。

在接口中只能定义常量和方法,不能实现方法,const定义常量,functionUser();不能使用pubilc

$a ="a"与 pubilc static$a

="a";

//抽象类

abstract class Father {

function name() {

echo "name...

";

}

abstract function name2();

public $n="n1";

public static $n2="n2";

const n3="n3";

}

class Data extends Father {

function name2() {

echo "name2 of Data...

";

}

}

$v=new Data();

echo $v->var1."

";

echo Father::$n2."

";

echo Father::n3."

";

//实现接口

interface User{

function getDiscount();

function getUserType();

}

//VIP用户 接口实现

class VipUser implements User{

private $discount = 0.5;

function getDiscount() {

return $this->discount;

}

function getUserType() {

return "VIP用户";

}

}

class Goods{

//public $price="45";        此处接口定义中不能包含成员变量

//public static $price="45"; 此处接口定义中不能包含静态变量

//

const price = 45;

public $vc;

//定义 User 接口类型参数,这时并不知道是什么用户

function run(User $vc){

$this->vc = $vc;

$discount = $this->vc->getDiscount();

$usertype = $this->vc->getUserType();

echo $usertype."商品价格:".self::price*$discount;

}

}

$display = new Goods();

$display ->run(new VipUser); //可以是更多其他用户类型

?>

php中extends是什么意思,在php中extends与implements的区别相关推荐

  1. 浅谈java中extends与implements的区别

    Extends可以理解为全盘继承了父类的功能.implements可以理解为为这个类附加一些额外的功能:interface定义一些方法,并没有实现,需要implements来实现才可用.extend可 ...

  2. Java中<? super T>和List<? extends T>的区别

    Java中<? super T>和List<? extends T>的区别 <? extends T> 下面通配符声明List<? extends Numbe ...

  3. java中extends与implements的区别

    JAVA中extends 与implements有啥区别?  1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.    ...

  4. java中implements是什么意思_Java:extends和implements的区别+用法

    Java代码中的extends和implements让我感到很迷惑,现在终于弄明白它们之间的区别和用法了. //定义一个Runner接口 public inerface Runner { int ID ...

  5. UML 中关系详解以及在visio中的表示

    http://www.cnblogs.com/kittywei/archive/2013/05/15/3079536.html Uml 关系主要有四大类: 依赖,关联,泛化,实现. 其中 依赖和关联是 ...

  6. JAVA Web Servlet中的异步处理 (2) -- Servlet3.1中的Non-blocking IO支持

    JAVA Web Servlet中的异步处理 (2) – Servlet3.1中的Non-blocking IO支持 在servlet 3.1中,新增了non-blocking IO支持. 在serv ...

  7. JAVA Web Servlet中的异步处理 (1) -- Servlet3.0中的Async支持

    JAVA Web Servlet中的异步处理 (1) – Servlet3.0中的Async支持 每个请求来到Web容器,Web容器会为其分配一个线程来专门负责该请求,直到完成处理前,该执行线程都不会 ...

  8. js删除两个集合中共同元素_多个集合中的共同和独特元素

    js删除两个集合中共同元素 本周,我们将暂时中断较高级别的问题和技术文章,以解决我们中许多人可能面临的一些代码问题. 没什么花哨的或太辛苦的,但是有一天它可能会节省您15分钟的时间,偶尔回到基础上也很 ...

  9. android中gradle的作用,Gradle 之 Android 中的应用

    在上一篇文章中 Gradle 之语言基础 Groovy 主要介绍了 Groovy 的基础语法(如果没有 Groovy 的基础,建议先看看上篇文章,如果可以动手敲一下里面的示例代码就更好不过了),也是为 ...

最新文章

  1. 数据库管理系统的组成和结构
  2. 成功解决sys.argv[1] IndexError: list index out of range错误
  3. HTML知识点总结之ul,ol,li标签
  4. 如何为您的AWS账户设置多因素身份验证(MFA)
  5. IntelliJ IDEA for Mac 文件结构侧边窗口/类文件内部结构(File Structure)
  6. [论文阅读] Deep Transformers For Fast Small Intestine Grounding In Capsule Endoscope Video
  7. nyoj 56 阶乘中素数的个数
  8. halcon窗体的移动和缩放_halcon与C#联合编程之鼠标控制图片缩放,拖动,roi
  9. Oracle中的within,oracle中within group的用法
  10. 推荐两个有意思的公号
  11. pdf转图片,汉字不显示No glyph for 23495(CID 0969) in font SimSun
  12. Task.Yield()和Task.CompletedTask有什么不同
  13. 美国TJX公司 - MBA智库百科
  14. 链游界巅峰巨作‬‬Hegemony Ⅱ 仿真元宇宙游戏王国震撼问世
  15. 《读书是教师最好的修行》读后感优秀范文2200字
  16. 什么是Python?Python简介
  17. WebSocket 入门:简易聊天室
  18. 牛客练习赛60 C—操作集锦
  19. 【OneDrive篇】OneDrive禁用个人保管库(网页端)
  20. pytorch学习(一)数据加载之前的预处理(UCSD数据集)

热门文章

  1. 基于条件随机场的命名实体识别
  2. 深度学习中softmax交叉熵损失函数的理解
  3. 修改 IIS 队列长度
  4. maven打包出错: Failed to clean project: Failed to delete
  5. 【算法】字符串近似搜索(转)
  6. Oracle触发器的语法详解
  7. 项目经理人必须要遵循的14个成功原则
  8. java发送http的get、post请求
  9. servlet与tomcat的关系
  10. 几乎所有的成功都是厚积薄发