Blogger Information
Blog 37
fans 0
comment 0
visits 34785
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
接口和抽象类
手机用户1607314868
Original
610 people have browsed it

自己定义一个接口和抽象类,并实现它,对比接口与抽象类的区别与联系,并实例演示

static

static三种用途

  1. 类中静态成员
  2. 函数中的静态变量
  3. 后期静态绑定[延迟静态绑定]
    静态继承上下文
  1. class Test
  2. {
  3. public static function demo1():string
  4. {
  5. return '父类'.__METHOD__;
  6. }
  7. public static function demo2():string
  8. {
  9. //self 永远和父类绑定,不能动态的识别或设置静态成员的调用者
  10. // return self::demo1();
  11. //static 可以识别静态成员的调用者,子类重写了demo1则调用子类的demo1
  12. //使用static代替self 。static用在动态的执行阶段,self用在静态的编译阶段
  13. return static::demo1();
  14. }
  15. }
  16. //子类
  17. class Sub extends Test
  18. {
  19. //只要是父类中的public ,protected 声明的成员,子类都可以使用
  20. //子类中重写父类的静态方法
  21. public static function demo1():string
  22. {
  23. return '子类'.__METHOD__;
  24. }
  25. }
  26. //这就是静态继承上下文
  27. //子类可以调用父类的静态成员
  28. echo Sub::demo2();

接口

interface 声明,接口只允许声明两类成员:类常量,公共抽象方法(没有实现过程)。
接口使用必须创建一个实现类。
实现类必须将接口中声明的抽象方法全部实现。

  1. interface iGood
  2. {
  3. //类常量
  4. const DEMO='举例';
  5. //抽象方法
  6. public function demo1(...$test):string
  7. }
  8. //实现类实现接口
  9. class Good implements iGood
  10. {
  11. public function demo1(...$test):string
  12. {
  13. return print_r($test,true);
  14. }
  15. }
  16. $good=new Good();
  17. echo $good->demo1('你好!');

抽象类

抽象类必须通过它的子类才可以使用,子类必须将抽象类的抽象方法实现,实现类:实现了接口和抽象类的抽象方法的 工作类
abstract 声明抽象类
抽象类不一定有抽象方法,但有抽象方法的一定是抽象类。

  1. abstract class Model
  2. {
  3. //抽象方法
  4. abstract public function __construct();
  5. }
  6. class UserModel extends Model
  7. {
  8. public function __construct(){
  9. }
  10. }

注意:接口不是类。
抽象类可以有属性、普通方法、抽象方法,但接口不能有属性、普通方法、可以有常量.
抽象类内未必有抽象方法,但接口内一定会有“抽象”方法

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post