PHP面向对象理解.docx

上传人:牧羊曲112 文档编号:3163741 上传时间:2023-03-11 格式:DOCX 页数:6 大小:38.89KB
返回 下载 相关 举报
PHP面向对象理解.docx_第1页
第1页 / 共6页
PHP面向对象理解.docx_第2页
第2页 / 共6页
PHP面向对象理解.docx_第3页
第3页 / 共6页
PHP面向对象理解.docx_第4页
第4页 / 共6页
PHP面向对象理解.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《PHP面向对象理解.docx》由会员分享,可在线阅读,更多相关《PHP面向对象理解.docx(6页珍藏版)》请在三一办公上搜索。

1、PHP面向对象理解PHP面向对象的理解 面向对象的思想,既把一系列事物(可以抽象看作一个个体,或者一种类型)的属性,操作看作是一个对象,将其封装为一个类,内部包含这个抽象概念相关的一些属性及相关操作。 php面向对象的三大特征:封装,继承,多态。 封装:既把一系列的属性,方法封装在一个类中,给每个属性添加public,protected,private,关键字修饰可以使得这些属性不能被外部轻易访问。 private:只能类内部访问操作。 protect:受保护类型,用于本类及子类调用 public:权限最大,可以内部调用,实例调用,子类调用 _get;可以获取private属性 _set;可以

2、设置private属性 _construct: 实例化类对象的时候调用,当子类继承父类,子类实例化对象时会默认先调用子类的构造函数,如果希望调用父类的构造函数,则需要在子类的构造函数中通过parent:_construct;访问父类的构造方法,注意此处的关键字parent为小写,同时如果需要访问父类的方法,也可以采用parent关键字访问parent:父类方法名。 _destruct: 析构函数,创建对象后,令创建的对象,例如:$a=null.即可调用析构函数 继承:通过extends关键字可以继承父类的一些属性,private修饰的变量可以被继承下来,但是无法被访问。php中子类的继承是单继

3、承的,但是可以继承多个接口。通过implement即可继承interface。 Trait关键字可以解决php单继承的问题,实现多重继承。 多态:多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果,由于php是弱类型语言,所以不同于java,c+不存在重载,但是自php5后出现了一个魔术方法_call。 _call的作用:当访问不存在的类方法时,调用该方法。 例如: Class A /name :调用的方法名字。args:参数列表 function _call($name,$args) /计算传入的参数个数 $num=count($args); If($num=1) $t

4、his-test1($args0); else $this-test2($args0,$args1); function test1($name) echo$name.“test1”; function test2($name,$ages) echo$name.“test2”.$ages; $a=new A; echo $a-a(a); echo $a-a(a,b); 抽象类abstract: Abstract类不能被实例化,abstract中可以声明变量,常量,普通方法及必须实现至少一个抽象方法(抽象方法不允许有,既不允许有其实现),abstract中方法可以是public,private,

5、protected。继承的派生类必须把抽象方法重载才能实例化。抽象类继承另外一个抽象类时,不能重写父类的抽象方法,抽象类只能单继承。 例子: abstract class A public $a; public function A echo “实现”; abstract function B; 接口interface: Interface中只能定义方法及其参数,不能实现,接口中方法必须是public公有的。接口可以声明不能实例化,继承他的类必须实现interface中的方法,一个类可以继承多个接口,一个接口可以继承另一个接口,接口中可以定义常量。 例子: Interface A Const

6、a=a; Public function A($a);/声明接口中的方法 Classs B implements A Public function A($a) echo $a;/必须写继承的接口中方法的实现 只要对象实现了某个接口,就直接可以通过对象调用接口的所有方法,接口实现的类方法有很多,这种现象就称为多态,相同的代码传入的对象不一样,所以具体实现方式也不一样,这就是多态的真正含义。 例子: interface Animal public function run; class Dog implements Animal public function run echo dog run;

7、 class Cat implements Animal public function run echo cat run; class Context private $_animal; /声明Animal接口对象 public function _construct(Animal $animal) $this-_animal = $animal; public function run $this-_animal-run; $dog = new Dog; /传入dog对象赋给Animal对象 $context = new Context($dog); /通过该对象访问run方法 $cont

8、ext-run; $cat = new Cat; /传入cat对象赋给Animal对象 $context = new Context($cat); /通过$context访问run方法(cat类) $context-run; Static关键字:可以给类的属性,方法修饰。类的属性,方法声明为static后,可以直接类名访问操作该属性或方法,static可以被继承。Static关键字定义的变量是一开始就保存在内存中的。 例如: class A public static $a=A; public static function a echo 这是:.self:$a.; class B exten

9、ds A function b echo 这是来自父类的:.parent:$a.; A:$a; A:a; $a=A; $a-a; $b=B; $b-b; 静态属性(类属性)只能通过类似:类名:变量名 而静态方法则可以通过对象访问与类名访问的两种方式。 Const关键字:定义一个常量。 外部访问采用:类名:常量名 内部访问采用:Self:常量名 注意如果是采用define关键字定义的常量是全局的,注意define关键字不能在类中定义为属性。 而Const关键字的定义的常量,仅限于当前空间,Const关键字不能在条件语句中使用。 Final关键字: 通过Final关键字修饰class可以防止父类被

10、继承。 通过Final关键字修饰方法可以防止方法被重写。 _autoload:php魔术方法,自动加载机制。 通过使用_autoload可以避免一次大量的include,require操作,只有在需要创建对象的时,php自动调用autoload引入文件,每创建一次对象,引入文件后,再次在其他位置创建对象时会自动调用该类实例化对象,而不需要再引入文件了。 例子: function _autoload($classname) require_once($classname.class.php);/*注意这个class的文件位置与_autoload函数在同一位置*/ 命名空间: 命名空间的作用类似于一个虚拟的文件目录。命名空间可以解决重名问题,关键字:namespace声明一个文件所在的虚拟目录位置。注意namespace关键字前不能有任何代码。关键字use使用虚拟目录下的文件。 例子: namespace Other; class A public function C echo a; namespace main;/命名一个为main的根命名空间 use OtherA; $a=new A; $a-C;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号