博客列表 >11月29日-抽象类、接口-***线上九期班

11月29日-抽象类、接口-***线上九期班

邯郸易住宋至刚
邯郸易住宋至刚原创
2019年12月16日 16:34:11580浏览

一、抽象类

代码

  1. <?php
  2. //抽象类(有一个抽象方法setName())
  3. abstract class Demo1
  4. {
  5. //成员属性
  6. public $name;
  7. //构造方法
  8. public function __construct($name)
  9. {
  10. $this->name = $name;
  11. }
  12. //返回用户名
  13. public function getName()
  14. {
  15. return '该用户名字:'.$this->name;
  16. }
  17. //重置用户名的抽象方法
  18. public abstract function setName($value);
  19. }
  20. //继承抽象类
  21. class demo2 extends Demo1
  22. {
  23. //继承父类构造方法
  24. public function __construct($name)
  25. {
  26. parent::__construct($name);
  27. }
  28. //实现父类当中的抽象方法
  29. public function setName($value)
  30. {
  31. return $this->name = $value;
  32. }
  33. }
  34. //客户端调用
  35. //实例化子类
  36. $obj = new Demo2('hhappysong');
  37. echo $obj->getName();
  38. echo '<hr>';
  39. //调用父类属性,重新赋值
  40. $obj->name = 'peter';
  41. echo $obj->getName();
  42. echo '<hr>';
  43. //调用已经在子类中实现的父类中的方法setName()
  44. $obj->setName('Jack');
  45. echo $obj->getName();

结果

二、接口

代码

  1. <?php
  2. interface iDemo3
  3. {
  4. //分布方式
  5. public function setLocation($location);
  6. //出租方式
  7. public function setRent($rent);
  8. }
  9. class Room implements iDemo3
  10. {
  11. public $location;
  12. public $rent;
  13. //必须实现setLocation()
  14. public function setLocation($location)
  15. {
  16. $this->location = $location;
  17. }
  18. //必须实现setRent()
  19. public function setRent($rent)
  20. {
  21. $this->rent = $rent;
  22. }
  23. //自定义方法
  24. public function getInfo()
  25. {
  26. return '这是'.$this->location.$this->rent.'***';
  27. }
  28. }
  29. //客户端调用
  30. //实例化
  31. $obj = new Room();
  32. //调用setLocation()设置分布方式
  33. $obj->setLocation('分散式');
  34. //调用setRent()设置出租方式
  35. $obj->setRent('合租');
  36. //调用getInfo()获取出租相关信息
  37. echo $obj->getInfo();

结果

三、总结

1、只要类中有一个抽象方法,这个类必须声明为抽象类

2、抽象类、接口中的方法只能有方法,不能有方法体

3、定义在接口和抽象类中的方法,必须在子类中全部实现

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议