• 继承和抽象类思想


    访问修饰符

      public:公共的,共有的,公开的(可以在“任何位置”使用)

      protected:受保护的(可以在当前类或继承关系中使用)

      private:私有的(只能在其所在的类中访问)

    父类关键词

      parent代表父类

    父类的使用

       parent::__construct($p1);//调用父类的构造函数来初始化p1

    继承关键字

       class 子类 extends 父类 {}

    构造方法析构方法在继承中的表现

      子类中没有定义构造方法时,会自动调用父类的构造方法

      可以手动调用 parent::__construct($p1)

    优点:节约代码

    重写关键字:override

    例子

    class C{

           function show1($para1){

                  echo "<br />父类的show1方法:para1 = " . $para1;

           }

    }

    class D extends C{

           function show1($para, $para2){//参数不一致

                  echo "<br />子类的show1方法";

           }

    }

    重写的基本要求

    访问权限

    下级的访问控制权限应该不低于上级的访问控制权限:

    方法的参数形式

    应该跟父类的一致。

    最终类关键字final class(最终方法:final method)

    用途:不希望对其进行扩展

    书写形式:final  class  类名{ }

    工厂模式

    class factory{

             //Instance表示“实例”,“对象”

             static function getInstance($className){

                       if(file_exists('./class/' . $className . ".class.php")){

                                $obj1 = new $className();

                                return $obj1;

                       }

                       else{

                                return null;//也可以die();

                       }

             }

    }

    $obj1 = factory::getInstance("A");//获取类A的一个对象

    $obj2 = factory::getInstance("B");//获取类B的一个对象

    $obj3 = factory::getInstance("A");//再获取类A的一个对象

    优点:只需要指定对象就可以创建

    单例模式设计

    某个类,只允许其“创建”出一个对象,即使去进行多次创建,也只能得到一个对象。

    单例模式的关键点

    1. 设置私有属性
    2. 设置私有构造方法
    3. 设置执行方法
    4. 设置私有拷贝方法

    抽象类

    关键字:abstract

    作用:用于做父类,规范类,不需要实例化

    抽象类方法

    抽象方法是一个没有方法体(也不含大括号)的方法定义“头”而已

    即相当于要求下级类去完成该功能(动作),但自己是不做的

    重载方法

    在一个类中,有多个同名的方法,每个方法的参数不同而已。这种现象就称为“重载”

    参数不同可以是:数量个数不同,或类型不同,或顺序不同

    例子

    class  A{

    int  function  f1(int  x){......}

    int  function  f1(int  x,  int  y){.....}

    int  function  f1(string s   int  m){....}

    }

    在PHP中重载只是一个概念

    属性重载

    所谓属性重载,就是在面对上述4种情形的属性使用场景中,该对象如果来“应对”的问题。

    如果某属性不存在,但在语法中使用如下情形,则会发生:

    取值:$v1 = 对象->属性;                     ===>自动调用类中的__get()方法

    赋值:对象->属性 = XX值;                 ===>自动调用类中的__set()方法

    判断是否存在:isset(对象->属性;)       ===>自动调用类中的__isset()方法

    销毁:unset(对象->属性;)                       ===>自动调用类中的__unset()方法

    方法重载

    关键字:__call

    例子:

    Function f1(){

             Echo :”f1被调用”

    }

    Function f2($x,$y){

             Echo :”f2被调用”;

             Return $x+$y;

    }

    Class a{

             Public $p1=1;

             Function __call($x,$arr){

                       $c=count($array);

                       If($c==0){

                                F1();

    }else if(){

             Return f2($arr[0],$arr[1]);

    }

    }

    }

    $d=new a();

    $d->f1();

    $v1=$d->f1(1,2)//f1不存在两个参数

    echo "<br />d1里面的p1=" . $d1->p1;

    echo "<br />结果v1=" . $v1;

    执行结果
    f1被调用
    f1被调用

    o1里面的p1=1
    结果v1=3

  • 相关阅读:
    sysctl.conf文件详解
    linux下高并发网络应用注意事项
    linux 异常
    myeclipse 上安装 Maven3
    windows 系统相关配置
    常用DOS命令总结
    豆瓣爬虫Scrapy“抄袭”改写
    vue基本配置和生命周期
    面试知识点
    ubuntu18.04国内软件源
  • 原文地址:https://www.cnblogs.com/diverman/p/8515454.html
Copyright © 2020-2023  润新知