• 抽象类,接口,魔术方法


    抽象类

      关键字:abstract

      含有抽象方法,(抽象方法必须包含在抽象类里,但抽象类不一定含有抽象方法)。

      抽象方法:未被实现的方法,(加 abstract   ,子类继承必须实现该方法)。

    abstract class Usb{
       public function load(){
          echo "usb is loading";
       }
       abstract public function unload();//抽象方法
    }
    class Upan extends Usb{
        public function unload(){//子类中必须实现父类的抽象方法,否则报错
            echo "usb is unloading";
        }
    }

    接口

      关键字:interface

      只含有抽象方法,不能含有普通方法 (接口中的方法都是抽象方法,所以不用写abstract)

      继承用implements

    //接口
    interface Usb1{
       public function load();
    }
    //接口扩展
    interface Usb2 extends Usb1{//接口也可以继承其他的接口
       public function run();
    }
    class Upan1 implements Usb2{
        public function load(){
            echo "usb is load";
        }
        public function run(){
            echo "usb is run";
        }
    }

    魔术方法:

      __construct  构造方法

      __destruct  析构方法

      __call    当调用不存在或无权访问的方法时,会自动调用该方法

        class Parents{
            //call()必须带两个参数,第一个为调用的不存在的方法名,第二个为方法里的参数 数组。
            public function __call($i,$j){
                echo '不存在'.$i;
                var_dump($j);
            }
        }
        $p1 = new Parents();
        $p1->b('abc');

      

      __get    当调用无权访问的属性时,自动调用该方法

        必须带一个参数,为不存在的属性名

      __set    类中某属性,对象无权操作(即不能设置值)时,自动调用该方法

        必须带两个参数,分别为无权操作的属性名,设置的值。

      __isset   当用isset()判断一个属性或方法存在与否时,自动触发__isset()

        必带一个参数,为变量名

        class Parents{
            private $a;
            public function __isset($i){
                echo'无权判断变量是否存在'.$i;            
            }
        }
        $p1 = new Parents();
        $p2=isset($p1->a);

      __unset    当用unset()删除一个属性或方法时,自动触发__unset()

        必带一个参数,为变量名

      __toString   调用这个类时会执行这个函数,return 输出这个类的说明。

  • 相关阅读:
    Beta冲刺(4/4)
    2019 SDN上机第7次作业
    Beta冲刺(3/4)
    Beta冲刺(2/4)
    机器学习第二次作业
    机器学习第一次作业
    软工实践个人总结
    第04组 Beta版本演示
    第04组 Beta冲刺(5/5)
    第04组 Beta冲刺(4/5)
  • 原文地址:https://www.cnblogs.com/SSs1995/p/9350519.html
Copyright © 2020-2023  润新知