php中的implements 使用详解


当前第2页 返回上一页

四,一个接口多个继承

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

<?php

interface demo {

  const NAME = "电影名称";

  function fun1();

  function fun2();

}

interface demo2 {

  function fun3();

  function fun4();

}

interface demo3 {

  const TEST = "这里是测试Test";

  function fun5();

}

class MyDemo implements demo, demo2 {

  function fun1() {

    echo "你好";

  }

  function fun2() {

    echo "----------";

  }

  function fun3() {

    echo "我也好<br />";

  }

  function fun4() {

    echo "大家都好<br />";

  }

}

class YourDemo extends MyDemo implements demo3 {

  function fun5() {

    echo "继承类后引用接口";

  }

}

$p = new YourDemo;

$p->fun1();

$p->fun2();

$p->fun3();

$p->fun4();

$p->fun5();

以上输出

你好----------我也好

大家都好

继承类后引用接口

上面的例子中我们可以看到接口都使用关键字 interface 来定义,并使用关键字 implements 来实现接口中的方法,再举个例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<?php

//定义接口

interface User{

  function getDiscount();

  function getUserType();

}

 

class VipUser implements User{ //VIP用户 接口实现

  private $discount = 0.8;  // VIP 用户折扣系数

  function getDiscount() {

    return $this->discount;

  }

  function getUserType() {

    return "VIP用户";

  }

}

class Goods{

  var $price = 88;

  var $vc;

  function run(User $vc){   //定义 User 接口类型参数,这时并不知道是什么用户

    $this->vc = $vc;

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

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

    echo $usertype."商品价格:".$this->price*$discount;

  }

}

$display = new Goods();

$display ->run(new VipUser); //VIP用户商品价格:70.4

这个例子演示了一个 PHP 接口的简单应用。该例子中,User 接口实现用户的折扣,而在 VipUser 类里面实现了具体的折扣系数。最后商品类 Goods 根据 User 接口来实现不同的用户报价.

最后总结下:

抽象类和接口的区别

接口是特殊的抽象类,也可以看做是一个模型的规范。接口与抽象类大致区别如下:

1.一个子类如果 implements 一个接口,就必须实现接口中的所有方法(不管是否需要);如果是继承一个抽象类,只需要实现需要的方法即可。

2.如果一个接口中定义的方法名改变了,那么所有实现此接口的子类需要同步更新方法名;而抽象类中如果方法名改变了,其子类对应的方法名将不受影响,只是变成了一个新的方法而已(相对老的方法实现)。

3.抽象类只能单继承,当一个子类需要实现的功能需要继承自多个父类时,就必须使用接口。

以上就是php中的implements 使用详解的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

php弹出对话框实现重定向示例代码

解析mysql数据库中外键约束

mysql中关于prepare原理的详解

php mysqli用法介绍

mysql数据如何生成php数组文件

简单讲解对wordpress数据库的认识及使用命令

php中mysqli处理查询结果集的多个方法

php中文件锁解决多进程同时读写一个文件问题的解决方法

mysql中buffered and unbuffered queries及pdo的非缓存查询例子

mysql事务回滚演示详解

更多相关阅读请进入《implements》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...