PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > 关于类继承的三大功能和抽象类的作用与实现和接口的基本语法

关于类继承的三大功能和抽象类的作用与实现和接口的基本语法

JiaJieChen
JiaJieChen 原创
2020年04月29日 00:50:01 1047浏览

类的三大功能

序号 名称 说明
1 继承 extends 父类的二类成员自动成为子类的成员
2 重写 覆写与父类/基类同名的成员(属性, 方法)
3 拓展 子类添加自身的方法来增加/扩展父类的功能

序号 封装 说明
1 public 公开成员,默认值, 类外部, 类内部, 以及类的子类中(类的继承上下文环境中)
2 proteced 受保护的成员, 类外部禁止访问, 但是类的内部以及它的继承上下文中可以访问
3 private 私有成员, 除了当前类可以访问, 类的外部以及类的继承上下文中都禁止访问

1.继承 : 子类继承基类的成员

  1. <?php
  2. // 基类 Demo
  3. // public: 公开成员
  4. // protected: 受保护的成员
  5. //private: 私有成员
  6. class Demo
  7. {
  8. //受保护成员 $name
  9. protected $name = 'iphone11' ;
  10. //受保护成员 $system
  11. protected $system = 'ios';
  12. //公开成员 $price
  13. public $price = 5888 ;
  14. //函数 items() 拼接类成员
  15. public function items()
  16. {
  17. return "手机:{$this->name} , 系统:{$this->system} , 价格:{$this->price}";
  18. }
  19. }
  20. //子类 US 继承 父类 Demo 里面的成员,
  21. class US extends Demo
  22. {
  23. }
  24. //对象 $acc
  25. $acc = new US ;
  26. echo $acc->items() ;
  27. //输出结果
  28. //手机:iphone11 , 系统:ios , 价格:5888
  29. ?>

2.重写与基类同名的成员

  1. <?php
  2. // 父类 Demo
  3. // public: 公开成员
  4. // protected: 受保护的成员
  5. //private: 私有成员
  6. class Demo
  7. {
  8. //受保护成员 $name
  9. protected $name = 'iphone11' ;
  10. //受保护成员 $system
  11. protected $system = 'ios';
  12. //公开成员 $price
  13. public $price = 5888 ;
  14. //函数 items() 拼接类成员
  15. public function items()
  16. {
  17. return "手机:{$this->name} , 系统:{$this->system} , 价格:{$this->price}";
  18. }
  19. }
  20. //子类 US 继承 父类 Demo 里面的成员,
  21. //我们将在子类重写基类
  22. class US extends Demo
  23. {
  24. // 属性价格重写 5888-> 6888
  25. public $price = 6888 ;
  26. //属性内容重写
  27. public function items2()
  28. {
  29. return parent::items().",太贵了买不起~";
  30. }
  31. }
  32. //对象 $acc
  33. $acc = new US ;
  34. echo $acc->items2() ;
  35. //输出结果
  36. //手机:iphone11 , 系统:ios , 价格:6888,太贵了买不起~
  37. ?>

3.拓展:子类添加自身的方法来增加

  1. <?php
  2. // 父类 Demo
  3. // public: 公开成员
  4. // protected: 受保护的成员
  5. //private: 私有成员
  6. class Demo
  7. {
  8. //受保护成员 $name
  9. protected $name = 'iphone11' ;
  10. //受保护成员 $system
  11. protected $system = 'ios';
  12. //公开成员 $price
  13. public $price = 5888 ;
  14. //函数 items() 拼接类成员
  15. public function items()
  16. {
  17. return "手机:{$this->name} , 系统:{$this->system} , 价格:{$this->price}";
  18. }
  19. }
  20. //子类 US 继承 父类 Demo 里面的成员,
  21. //我们将在子类重写基类
  22. class US extends Demo
  23. {
  24. //1.重写
  25. // 属性价格重写 5888-> 6888
  26. public $price = 6888 ;
  27. //属性内容重写
  28. public function items2()
  29. {
  30. return parent::items().",太贵了买不起~";
  31. }
  32. //2.拓展
  33. //折扣 0.9
  34. public $discount = 0.9 ;
  35. public function items3()
  36. {
  37. return parent::items().",太贵了买不起~给打{$this->discount}折";
  38. }
  39. }
  40. //对象 $acc
  41. $acc = new US ;
  42. echo $acc->items3() ;
  43. //输出结果
  44. //手机:iphone11 , 系统:ios , 价格:6888,太贵了买不起~给打0.9折?>

抽象类的作用与实现

  1. <?php
  2. // 抽象类 abstract Demo
  3. abstract class Demo
  4. {
  5. protected $name = "张启灵";
  6. protected $age = 26 ;
  7. protected function flgure()
  8. {
  9. return "姓名:{$this->name},年龄:{$this->age}";
  10. }
  11. abstract protected function flgure2();
  12. }
  13. //抽象类不能直接实例化
  14. abstract class OS extends Demo
  15. {
  16. protected $professional = '盗墓贼';
  17. protected function flgure2()
  18. {
  19. return parent::flgure() . ",职业:{$this->professional}";
  20. }
  21. }
  22. //最终用工作类实例化抽象类Demo
  23. class USa extends OS
  24. {
  25. public function flgure2()
  26. {
  27. return parent::flgure2() ;
  28. }
  29. }
  30. $abc = new USa ;
  31. echo $abc->flgure2();
  32. //输出结果
  33. //姓名:张启灵,年龄:26,职业:盗墓贼
  34. ?>

接口的基本语法

  1. <?php
  2. // 接口关键字 :interface
  3. interface Demo
  4. {
  5. const NATION = "中国";
  6. public static function obj() ;
  7. }
  8. class OS implements Demo
  9. {
  10. public static $name = '吴邪';
  11. public static function obj()
  12. {
  13. return self::$name . "国籍:" . Demo::NATION;
  14. }
  15. }
  16. echo OS::obj() ;
  17. //输出结果
  18. //吴邪国籍:中国
  19. ?>

有很多地方非常不熟练,还得做很多实际操作才行,感谢老师和平台!

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