PHP类相关知识点实例总结
本文实例总结了PHP类相关知识点。分享给大家供大家参考,具体如下:
最终类与最终方法
如果父类中的方法被声明为final,则子类无法覆盖该方法。如果一个类被声明为final,则不能被继承。
finalclassa{} classa{ finalpublicfunctionA(){} }
抽象类与抽象方法
abstractclassa{ publicabstractfunctionfunc(); } classAextendsa{ publicfunctionfunc(){} }
①一个类可以使用abstract声明为抽象类;抽象类是不能实例化的类,只用作其他类的父类。
abstractclassname{}
②一个方法可以使用abstract声明为抽象方法;抽象方法只需要声明方法头,不需要大括号部分的方法体。
abstractpublicfunctionname($val);
③一个类中有抽象方法,则该类必须声明为抽象类。
④子类继承自一个抽象类,则子类不行实现父类中的所有抽象方法,除非子类也继续作为抽象类。
⑤子类实现抽象父类的方法时,访问控制符范围不能降低,且方法的参数也必须一致(重写)。
接口
接口可以看作是抽象类的更高层面的抽象,可以说是抽象类的特例
interfacea{ functionfunc(); } classAimplementsa{ functionfunc(){} }
类:属性、类常量、方法
抽象类:属性、类常量、抽象方法
接口:接口常量、抽象方法
①相比抽象类,接口可实现‘多继承'
classAimplementsa,b,c{}
②一个接口只能继承一个接口
interfaceaextendsb{}
③其中方法都是抽象方法不用abstract修饰,即下级类要么实现接口的方法(implements),要么也声明为抽象方法
重载技术
1.属性重载:如果使用一个不存在的属性,就会调用类中预先定义好的某个方法以处理数据;
对于属性不用的应用场景,做如下处理
①取值:自动调用类中的__get()
②赋值:自动调用类中的__set()
③判断是否存在:自动调用类中的__isset()
④销毁:自动调用类中的__unset()
前提是预先定义好这些方法,否则会报错
<?php classbee{ public$ol=array(); publicfunction__get($key){ if(isset($this->ol[$key])){ return$this->ol[$key]; } return$key.'notexists'; } publicfunction__set($key,$val){ $this->ol[$key]=$val; } publicfunction__isset($key){ if(isset($this->ol[$key])){ returntrue; } returnfalse; } publicfunction__unset($key){ unset($this->ol[$key]); } } $obj=newbee(); echo$obj->one; echo'<br>'; $obj->one=1; echo$obj->one; echo'<br>'; var_dump(isset($obj->one));
运行结果如下:
onenotexists 1 booleantrue
2.方法重载:如果使用一个不存在的方法,就会调用类中预先定义好的某个方法以处理该行为;
对于方法不用的应用场景,做如下处理
①在对象中调用不可访问的方法:__call()
②静态方式中调用不可访问方法:__callStatic()
<?php classbee{ publicfunction__call($name,$arr){ echo'<br>'; echo'function'.$name.'notexist'; } staticfunction__callStatic($name,$arr){ echo'<br>'; echo'function'.$name.'notexist'; } /*publicfunction__call($name,$arr){ $num=count($arr); if($num<1){ $name(); }else{ $name=$name.'_one'; $name($arr[0]); } }*/ } $obj->func(); bee::staFunc(); /*$obj->func(1); functionfunc(){ echo'<br>'; echo'no.0'; } functionfunc_one($val){ echo'<br>'; echo'no.'.$val; }*/
运行结果如下:
functionfuncnotexist functionstaFuncnotexist
注意:以上方法都属于魔术方法,都带有参数
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。