PHP面向对象
PHP面向对象:类的应用
#### 1. 如何抽象出一个类 - 类的定义: ```php class 类名{ 属性。。。 方法。。。 } ``` 使用一个关键字class和后面加上一个你想要的类名以及加上一对大括号, 这样一个类的结构就定义出来了,只要在里面写代码就可以了。 通过在类定义中使用关键字" var "来声明变量,即创建了类的属性,在声明成员属性的时候可以给定初值。 通过在类定义中声明函数,即创建了类的方法。 #### 2. 如何实例化对象 我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了。 当定义好类后,我们使用new关键字来生成一个对象。 ```php $对象名称 = new 类名称(); ``` #### 3. 如何去使用对象中的成员 PHP对象中的成员有两种一种是成员属性, 一种是成员方法。对象我们以经可以声明了,$p1=new Person(); 怎么去使用对象的成员呢?要想访问对象中的成员就要使用一个特殊的操作符”->”来完成对象成员的访问: - 对象->属性 $p1->name; $p2->age; $p3->sex; - 对象->方法 $p1->say(); $p2->run(); #### 4. 特殊的引用this的使用 $this是对象内部代表这个对象的引用,在对象内部和调用本对象的成员和对象外部调用对象的成员所使用的方式是一样的。 - $this->属性: $this->name; $this->age; $this->sex; - $this->方法 :$this->say(); $this->run(); #### 5. 重载新的方法(parent::) 我们所说的重载新的方法就是子类覆盖父类的已有的方法。 虽然说在PHP里面不能定义同名的方法, 但是在父子关系的两个类中,我们可以在子类中定义和父类同名的方法,这样就把父类中继承过来的方法覆盖掉了。 如果我们想对这个方法覆盖保留原有的功能外加上一点点功能,就在子类这 个方法中可以调用到父类中被覆盖的方法, 也就是把被覆盖的方法原有的功能拿过来再加上自己的一点功能,可以通过两种方法实现在子类的方法中调用父类被覆盖的方法: - 一种是使用父类的“类名::“来调用父类中被覆盖的方法; - 一种是使用“parent::”的方试来调用父类中被覆盖的方法; ```php class Student extends Person{ var $school; //学生所在学校的属性 function __construct($name, $sex, $age, $school) { //使用父类中的方法为原有的属性赋值 parent::__construct($name, $sex, $age); $this->school = $school; } //这个学生学习的方法 function study() { echo "我的名子叫:" . $this->name . " 我正在" . $this->school . "学习"; } //这个学性可以说话的方法, 说出自己所有的属性,覆盖了父类的同名方法 function say() { //使用父类的"类名::"来调用父类中被覆盖的方法; // Person::say(); //或者使用"parent::"的方试来调用父类中被覆盖的方法; parent::say(); //加上一点自己的功能 echo "我的年龄是:" . $this->age . " 我在" . $this->school . "上学"; } } ``` 现在用两种方式都可以访问到父类中被覆盖的方法,我们选那种方式最好呢?用户可能会发现自己写的代码访问了父类的变量和函数。如果子类非常精炼或者父类非 常专业化的时候尤其是这样。 不要用代码中父类文字上的名字,应该用特殊的名字 parent,它指的就是子类在 extends 声明中所指的父类的名字。这样做可以避免在多个地方使用父类的名字。如果继承树在实现的过程中要修改,只要简单地修改类中 extends 声明的部分。 同样,构造方法在子类中如果没有声明的话,也可以使用父类中的构造方法,如果子类中重新定义了一个构造方法也会覆盖掉父类中的构造方法,如果想使用新的构造方法为所有属性赋值也可以用同样的方式。
顶部
收展
底部
[TOC]
目录
PHP面向对象:基本概念
PHP面向对象:三大特征
PHP面向对象:魔术方法
PHP面向对象:对象串行化
PHP面向对象:访问类型
PHP面向对象:关键字
PHP面向对象:类的应用
PHP面向对象:抽象方法和抽象类
PHP面向对象:接口(interface)
相关推荐
PHP底层
PHP应用
PHP工具类
PHP编程经验
PHP框架