初识PHP抽象类和接口

抽象类(abstract)

  任何一个类,如果类的内部至少有一个方法是被声明为抽象的(abstract),那么这个类就必须被声明为抽象的,抽象类中被定义为抽象的方法只有声明调用方式,而不能具体的实现,而抽象类中的普通的方法是可有具体实现的。抽象类不能被直接实例化,只能被继承(extends),继承一个抽象类的时候,子类必须要实现父类中所有的抽象方法(且方法的参数数量和参数的数据类型也要保持一致),并且这些方法的访问控制只能和父类中的访问控制一样(方法不能为private),或者更为宽松(public>portected>private:public 最为宽松)

        // 定义抽象类POST
        abstract class abstract_study{
            //抽象方法只有声明
            abstract public function read();
            abstract public function write();
            //普通方法可以有具体实现
            public function read(){
                echo ‘this is read function!‘;
            }
        }
        //新建test子类继承abstract_study
        class test extends abstract_study
        {
            //父类的抽象方法的具体实现
            public function write(){
                echo ‘this is write function!‘;
            }
            public function delete(){
                echo ‘this is delete function!‘;
            }
        }
        $w_post=new test;
        $w_post->read();
        $w_post->write();
        $w_post->delete();
        // 以上输出:
        // this is read function!
        // this is write function!
        // this is delete function!

 


接口(interface)

  定义接口就像定义一个标准的类一样,只不过接口类内的方法没有具体的实现,只有方法的声明,接口的方法只能为public 不能为其它.

   定义一个接口使用interface,要实现一个接口使用implements,实现接口的类中必须得实现接口中所有定义的方法并且要与定义时一致,实现多个接口使用逗号(,)分开,实现多个接口的时候方法名不能有重复的。接口中所定义的常量不能被修改。接口也能继承,当实现继承的接口的时候,必须得实现接口本身和父级接口中所有的方法,否刚会报错。

    interface shop{
        public function show($shop_name,$money);
        public function buy($shop_name,$money);
    }
    class show_buy implements shop{
        private $shop=array();

        public function show($shop_name,$money){
            $this->shop[‘shop_name‘]=$shop_name;
            $this->shop[‘money‘]=$money;
        }

        public function buy($shop_name,$money){
            $this->shop[‘shop_name‘]=$shop_name;
            $this->shop[‘money‘]=$money;
        }        
    }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。