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

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. }

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

更多相关文章

  1. 类声明与实例化、类的静态成员与类的扩展、trait与父类区别联系
  2. 0202面向对象编程基础
  3. PHP类声明|类的实例化|类的静态成员|类的扩展|trait与父类关联|t
  4. PHP面向对象编程
  5. 0202-类声明及类的实例化,静态成员与类的扩展,trait与父类的区别
  6. PHP类与对象的基础概念
  7. Java基础知识点1
  8. Android的Activity的启动流程分析
  9. android的一些知识小记

随机推荐

  1. 用Gradle 构建android程序
  2. 第四周Android实习笔记
  3. 裁判文书android app逆向
  4. Mono for Android V1.0 正式发布啦!
  5. 从linux看Android之一--init进程
  6. Android Scripting Environment -ASE
  7. Android(安卓)make 中变量记录
  8. Android——修改开机画面
  9. eclipse的dx问题
  10. Android 笔记