php-面向对象(4)

来源:互联网 发布:windowsvps搭建数据库 编辑:程序博客网 时间:2024/06/06 17:20

1.回顾:上篇学习了类常量,构造函数和析构函数

2.这篇将学习 抽象类(abstract), 接口 (interface), 特征 (traits)

3.访问控制

     (1)对属性和方法的访问控制是通过前面添加关键字public,protected,private来实现的

   (2)如果没有设置这些关键字,该方法默认为public

4.抽象类 :

   重点:

     (1)php5支持抽象类和抽象方法     (2)抽象类不能被实例化,你必须继承该抽象类,在实例化子类     (3)抽象类至少包含一个抽象方法     (4)如果类方法被声明为抽象的,那么其中不能包括具体的功能实现     (5)继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法     (6)子类中的方法的可见性必须和抽象类一样,抽象方法为 protected ,那么子类实现的方法应该声明为
         protected或public     (7)抽象类的子类中的普通方法执行方式和其他类相同
 //抽象类     abstract class aclass{         //抽象方法         abstract protected function getValue();         abstract protected function setValue($val);         //普通方法         public function printOut(){             $this->getValue();         }     }     class bclass extends aclass{         protected function getValue(){             return "bclass";         }         public function setValue($val){             return $val." bclass";         }     }     //实例化子类     $b=new bclass();     $b->printOut();     echo $b->setValue("LABELNET ");
     

5.接口 interface

           (1)可以知道某个类实现那些方法,但不需要定义这些方法的具体内容         (2)定义的所有方法都是空的         (3)接口中定义的所有方法都必须是public,这是特性         (4)实现接口,可以使用implements 操作符         (5)类中必须实现接口中定义的所有方法,否则会报fatal错误         (6)实现多个接口,使用逗号分隔多个接口的名称         (7)多个接口是,接口中方法名,不能重名         (8)接口也可以继承,使用extends操作符

 interface cclass{         public function setVal($name,$vale);         public function getVal();     }     class dclass implements cclass{         private $val=array();         public function setVal($name,$vale){             $this->val[$name]=$vale;         }         public function getVal(){              return $this->val;         }     }     $d=new dclass();     $d->setVal("user","LABELNET");     var_dump($d->getVal());

6.特征 traits

    6.1 重点

       (1)php5.4 实现了代码复用的方法       (2)特点是单继承的代码重用机制,是开发人员重复使用方法       (3)降低了类的复杂度       (4)不能对自己实例化

    6.2 使用

       (1)从基类继承的成员是由成员的特征去重写       (2)成员从当前类重写特性方法,
     #从基类继承的成员是由成员的特征去重写        #成员从当前类重写特性方法,    class base{         public function say(){             echo " <br> base say() <br>";         }     }     trait eclass{         //重写base的say方法         function say(){             parent::say();             echo "hi efun1 <br>";         }     }      class fclass extends base{         //通过 特征调用         use eclass;     }     $f=new fclass();     $f->say();
      

    6.3 使用多个 trait时 ,使用逗号隔开

trait HelloWorld{         public function sayHello(){             echo "Hello World";         }     }     class thisHi{         use HelloWorld;         public function sayHello(){             echo "HI world";         }     }     $hi=new thisHi();     $hi->sayHello();



下篇:将学习 PHP 类与对象 之 重载




0 0
原创粉丝点击