• PHP abstract 抽象类定义与用法示例


    PHP抽象类应用要点:

    1.定义一些方法,子类必须完全实现这个抽象中所有的方法

    2.不能从抽象类创建对象,它的意义在于被扩展

    3.抽象类通常具有抽象方法,方法中没有大括号

    PHP抽象类应用重点:

    1.抽象方法不必实现具体的功能,由子类来完成

    2.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义

    3.抽象类的方法可以有参数,也可以为空

    4.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数

    //作用:抽象类不实现具体方法,具体方法由子类完成。
    //定义抽象类 abstract
    abstract class A{
      //abstract 定义抽象类的方法,这里没有花括号。子类必须实现这个抽象方法。
      abstract public function say();
      //抽象类可以有参数
      abstract public function eat($argument);
      //在抽象类中可以定义普通的方法。
      public function run(){
        echo '这是run方法';
      }
    }
    class B extends A{
      //子类必须实现父类的抽象方法,否则是致命的错误。
      public function say(){
        echo '这是say方法,实现了抽象方法';
      }
      public function eat($argument){
        echo '抽象类可以有参数 ,输出参数:'.$argument;
      }
    }
    $b =new B;
    $b->say();
    echo '<br>';
    $b->eat('apple');
    echo '<br>';
    $b->run();

    运行结果:

    这是say方法,实现了抽象方法
    抽象类可以有参数 ,输出参数:apple
    这是run方法

    注意:

    如果 B 实现了抽象方法 say()、eat() ,那么 B 中 say()、eat() 方法的访问控制不能比 A 中 say()、eat() 的访问控制更严格,也就是说:

    (1)      如果 A 中 say()、eat() 声明为 public ,那么 B 中 say()、eat() 的声明只能是 public ,不能是 protected 或 private

    (2)      如果 A 中 say()、eat() 声明为 protected ,那么 B 中 say()、eat() 的声明可以是 public 或 protected ,但不能是 private

    (3)      如果 A 中 say()、eat() 声明为 private ,嘿嘿,不能定义为 private 哦!( Fatalerror :Abstract function A::say()、eat() cannot be declaredprivate )

  • 相关阅读:
    arcEngine classic code(2)
    VisualGraph文档
    基于.net2 的CAD 绘图控件virtualGraph(2)
    沈阳三维GIS软件开发人员
    arcEngine + .net 2 AccessViolationException
    数据库事务并发带来的问题
    理解 WPF Dispatcher
    扇入与扇出
    IComparable 与 IComparer
    同步、异步、多线程
  • 原文地址:https://www.cnblogs.com/-mrl/p/13193980.html
Copyright © 2020-2023  润新知