PHP面向对象
理解面向对象与面向过程
程序开发 :
面向过程 vs 面向对象
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把问题中的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
通俗点说就是:
如果要你去设计一个棋局的话:
面向对象可能是这样的:
黑棋和红棋对象:负责棋子的走向,两者行为相同
棋盘系统:通过黑棋和红棋对象的行为展示棋局情况
规则系统:判断“战场”的变化以及胜负等
面向过程可能是这样的:
开始游戏,红棋先走
展示棋局情况
判断战况(是否有棋子被吃、胜负情况)
黑棋接着走
展示棋局情况
判断战况(是否有棋子被吃、胜负情况)
所以可以看出来,面向对象把问题中的事务分解成了各个对象,每个对象有自己的任务,而面向过程是通过实现解决问题的每一个步骤去解决问题。
优缺点
面向对象
优点:易维护、复用、扩展,
由于面向对象所具有的封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活
缺点:性能比面向过程低
面向过程
优点:性能比面向对象高,
因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
类的定义
类是定义了一件事物的抽象特点,它将数据的形式以及这些数据上的操作封装在一起。
对象是具有类类型的变量,是对类的实例。内部构成 : 成员变量(属性) + 成员函数(方法)
成员变量 (属性)
定义在类内部的变量。
该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性。
成员函数 (方法)
定义在类的内部,
可用于访问对象的数据。
继承
继承:继承性是子类自动共享父类数据结构和方法的机制,是类之间的一种关系。
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把一个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。父类: 一个类被某它类继承,可将该类成为父类,或基类,超类。
子类: 一个类继承其他类称为子类,也可称为派生类。
类与对象
类的结构
类 : 定义类名 ,定义成员变量(属性) ,定义成员函数(方法)
类的内容
创建一个类 :
class class_name{
var $name; // 还没有赋值
var $sex ;
function cy($var1){
echo $this->name;
echo $var1;
}
}
?>
定于(类名) {
//声明成员变量
var 为一种修饰符
//声明成员函数 (方法)
使用预定义%this 调用成员变量
成员函数传参$var1 可直接调用
}
实例化和赋值
1 |
|
类的修饰符介绍
在类中直接声明的变量称为成员属性(也可以成为成员变量)可以在类中声明多个变量,即“对象”中可以有多个成员属性,每个变量都存储“对象”不同的属性信息。
访问权限修饰符:对属性的定义常用访问权限修饰符:
public:公共的,在类的内部、子类中或者类的外部都可以使用,不受限制;
protected∶受保护的,在类的内部、子类中可以使用,但不能在类的外部使用;
private:私有的,只能在类的内部使用,在类的外部或者子类中都无法使用。
类的内部 | 类的子类 | 类的外部 | |
---|---|---|---|
public | √ | √ | √ |
protected | √ | √ | × |
private | √ | × | × |
代码展示 :
下面 两个调用会报错
因为一个是受保护的 ,一个是私有的
,注释掉查看效果
不会报错
—————————————
使用继承 再次尝试其他 两个保护的 和私有的
可见受保护的可正常输出, 私有的不行
1 |
|
类与对象
类是对象的抽象,而对象是类的具体实例。
类是想法,把类实例化(new),调用具体值后就变成了对象
类的成员方法
在类中定义的函数被称为成员方法。函数实现的是某个独立的功能;
成员方法实现的是类中的一个行为,是类的一部分。
可以在类中声明多个成员方法,成员方法的声明和函数声明完全一样,只不过在声明成员方法时可以在function关键字前加一些访问权限修饰符,如public、protected、private (可以省略,默认为public)