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

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

只猫
只猫原创
2019年12月03日 15:13:34602浏览

抽象类、抽象方法以及接口

1.抽象类

  1. <?php
  2. //抽象类、抽象方法
  3. //类中只要有抽象方法。就需要声明为抽象类
  4. //抽象类定义 abstract
  5. abstract class Rule{
  6. public $name;
  7. public $exp;
  8. public function __construct($name = '',$exp=0){
  9. $this->name =$name;
  10. $this->exp =$exp;
  11. }
  12. //吃饭
  13. public function chifan(){
  14. echo '<br>我正在吃饭';
  15. }
  16. //打怪
  17. abstract public function daguai();
  18. //升级
  19. abstract protected function shengji();
  20. //只要类中有抽象方法 ,类就要声明为abstrat ,抽象方法不能被声明为私有 ,抽象方法没有方法体,不用写大括号。
  21. }
  22. //抽象类不可实例化、必须被扩展类继承之后完成 抽象类中定义的所有抽象方法后才能被实例化
  23. class Role extends Rule{
  24. public function __construct($name = 'xiaoA'){
  25. parent::__construct($name);
  26. }
  27. //父级抽象类的具体方法应该可以直接使用
  28. //实现抽象方法
  29. public function daguai($boss= 9999,$skill= 1000){
  30. while($boss>0){
  31. $boss = $boss - $skill;
  32. echo '<br>继续攻击<br>';
  33. }
  34. echo '<br>胜利<br>';
  35. }
  36. public function shengji($exp=10000,$level=1){
  37. $up = $level + $exp/1000;
  38. echo '<br>恭喜升到'.$up.'级<br>';
  39. }
  40. }
  41. $A = new Role('littleA');
  42. echo '当前玩家'. $A->name. '经验为' . $A->exp;
  43. $A->chifan();
  44. $A->daguai();
  45. $A->shengji();

执行结果:

2.接口

  1. <?php
  2. //接口定义一种类的规定 方法必须是public
  3. //interface
  4. interface IPhone{
  5. //接口中可以有方法和类常量,而方法不需要有方法体
  6. //定义常量
  7. const NAME = 'iphone';
  8. const AI = 'siri';
  9. public function call($number);
  10. public function camera($SOC);
  11. public function music();
  12. }
  13. //一个类来实现接口中定义的方法
  14. class IphoneX implements IPhone{
  15. public $screen;
  16. public $charge;
  17. public function call($number){
  18. echo '用iPhoneX打电话给'.$number;
  19. }
  20. public function camera($SOC){
  21. echo '用iPhoneX照相';
  22. }
  23. public function music(){
  24. echo '用Airpods听音乐';
  25. }
  26. }
  27. class Iphone8 implements IPhone{
  28. public $screen;
  29. public $charge;
  30. public function call($number){
  31. echo '用iPhone8打电话给'.$number;
  32. }
  33. public function camera($SOC){
  34. echo '用iPhone8照相';
  35. }
  36. public function music(){
  37. echo '用iPhone8听音乐';
  38. }
  39. }
  40. $iphone8 = new Iphone8;
  41. $iphoneX = new IphoneX;
  42. echo $iphone8->music();
  43. echo '<br>';
  44. echo $iphoneX->music();

执行结果:

总结:学了抽象类,接口的定义。其中抽象方法不能为私有,必须能被子类访问,接口的方法必须是public。子类需要实现抽象类定义的全部方法才能被实例化。

手写:

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