博客列表 >11月29日_抽象类和接口

11月29日_抽象类和接口

fkkf467
fkkf467原创
2019年12月02日 00:54:02649浏览

一、抽象类

  • abstract 定义抽象方法或抽象类
  • 类中只要有一个抽象方法, 该类就应该声明为抽象类
  • 抽象类只能被继承,不能实例化,并且抽象方法必须在子类实现
    1. <?php
    2. abstract class Shop{
    3. public $name;
    4. public $price;
    5. public function __construct($name,$price)
    6. {
    7. $this->name = $name;
    8. $this->price = $price;
    9. }
    10. abstract public function getInfo($num);
    11. }
    12. class Computer extends Shop{
    13. // 构造方法不会自动继承, 必须手动重写
    14. public function __construct($name, $price)
    15. {
    16. parent::__construct($name, $price);
    17. }
    18. public function getInfo($num)
    19. {
    20. return $this->name . '的价格为:' . $this->price . ',购买数量为:' . $num . '台';
    21. }
    22. }
    23. $c = new Computer('小米笔记本',4599);
    24. echo $c->getInfo(3);
    25. ?>

二、接口

interface 定义接口
implements 类实现接口的关键字

  1. <?php
  2. interface User{
  3. public function role($role);
  4. public function right($right);
  5. }
  6. class Member implements User{
  7. public $name;
  8. public function __construct($name)
  9. {
  10. $this->name = $name;
  11. }
  12. public function role($role)
  13. {
  14. return $this->name . '是' . $role;
  15. }
  16. public function right($right)
  17. {
  18. return $this->name . '权限有' . $right;
  19. }
  20. }
  21. $m = new Member('猪小明');
  22. echo $m->role('会员') . '<br>';
  23. echo $m->right('去广告');
  24. ?>


三、总结

抽象类的两个特点:不能实例化、类中抽象方法,在子类中必须全部实现
如果不能将接口中方法全部实现就用抽象类来实现它
否则,就必须把接口中的方法全部实现
抽象和接口区别:
抽象可以有普通方法,成员变量。
接口不可以有普通方法,不可以有成员变量。

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