博客列表 >11月29日_抽象类、抽象方法以及接口 - 九期线上班

11月29日_抽象类、抽象方法以及接口 - 九期线上班

木易
木易原创
2019年12月13日 17:59:47647浏览

1. 抽象类

  1. <?php
  2. abstract class a{
  3. public $name;
  4. public function __construct($name)
  5. {
  6. $this -> name =$name;
  7. }
  8. public function af(){
  9. echo $this -> name .'111';
  10. }
  11. // 抽象方法
  12. abstract public function aff();
  13. }
  14. //抽象类不能实例化,只能继承
  15. class b extends a{
  16. public function aff(){
  17. echo $this ->name;
  18. }
  19. }
  20. //调用子类,进行实例化,调用成员方法和成员变量
  21. $a =new b('欧阳克');
  22. $a -> af();
  23. echo '<br>';
  24. $a -> aff();
  25. abstract class Person{
  26. protected $name;
  27. protected function __construct($name='欧阳克')
  28. {
  29. $this -> name =$name;
  30. }
  31. public function getName(){
  32. return $this->name;
  33. }
  34. abstract protected function setName($v);
  35. }
  36. class stu extends Person{
  37. public function __construct($name = '欧阳克')
  38. {
  39. parent::__construct($name);
  40. }
  41. public function setName($v)
  42. {
  43. $this ->name = $v;
  44. }
  45. }
  46. $s = new stu('猪哥');
  47. echo 'PHP中文网创始人'. $s->getName().'<br>';
  48. $s ->setName('灭绝师太');
  49. echo '前端讲师'.$s->getName().'<br>';
  50. echo '<hr>';

2. 接口

  1. <?php
  2. interface V{
  3. const LXR ='欧阳克';
  4. public function setFuel($fuel);
  5. public function setPurpose($Purpose);
  6. }
  7. class Car implements V{
  8. public $fuel;
  9. public $Purpose;
  10. //原来这里加了个构造方法但是系统报错了,删去后就解决了但是不是很明白为什么?
  11. // 必须实现的接口方法
  12. public function setFuel($fuel){
  13. $this -> fuel=$fuel;
  14. }
  15. public function setPurpose($Purpose)
  16. {
  17. $this -> Purpose=$Purpose;
  18. }
  19. public function getInfo(){
  20. return '用'.$this -> fuel.'汽油然后'.$this->Purpose;
  21. }
  22. }
  23. $car = new Car;
  24. $car ->setFuel('98#');
  25. $car ->setPurpose('一路向北');
  26. echo $car -> getInfo();

个人总结

抽象类:只能被继承,不能实例化,必须在子类实现
abstract:定义抽象方法、抽象类
实现抽象方法的子类方法可见性不能低于抽象方法原定义
接口:interface指定某个类必须实现的方法,但不需要定义方法
仅出现:方法与常亮,必须是public方法
implements:类实现接口的关键字
抽象和接口的区别:
抽象可以有普通方法,成员变量
接口不可以有普通方法,不可以有成员变量

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