PHP面向对象OOP

面向对象介绍
面向对象OOP
优点
代码简洁,易于维护,可以重用性
oop达到软件工程的三个目标
重用性,灵活性,扩展性,高内聚,低耦合
oop面向对象编程特点
封装,继承,多态
建议学习php面向对象的两个方向
面向对象技术的语法
1,OOP面向对象的编程
面向对象的编程思想
1,OOA面向对象的分析
2,OOD面向对象的设计

对象的组成
1,成员属性(描述)
2,成员方法(功能,行为)

对象的声明方式
1,对 对象进行描述
什么是类
1,类是具有相同属性和相同行为的一类总称
类和对象的关系
1,先有类在有对象
2,类是描述对象
3,类是对象的抽象化
4,对象是类的实例化
类的组成部分
1,成员属性(一个成员属性就是一个变量)
2,成员方法(一个成员方法就是一个函数)

如何声明一个类
1,简单的人类
成员属性
身高,性别,姓名
成员方法
吃饭,睡觉

类的声明
简单格式
class 类名{
成员属性  //也叫成员变量
成员方法  //也叫成员函数
}
完整格式
class 类名 [extends父类][implements接口1][implements接口2]{
成员属性  //也叫成员变量
成员方法  //也叫成员函数

}
类的声明需要注意的
1,成员属性的声明,属性前必须有修饰词
2,成员属性可以不给默认值
3,成员属性就是一个变量
4,成员方法就是一个函数
成员属性
格式
修饰符 $变量名=默认值;
注意:成员属性不可以是带运算符的表达式,变量,方法或函数调用
常用的属性修饰符:public protected private static
成员方法
成员方法格式
修饰符 function 方法名(参数...){
[方法体]
return 返回值
}
修饰符:public,protected,private static abstract final
声明的成员方法必须和对象相关,不能是一些没有意义的操作
实例化对象
定义好类后,我们使用new关键字来生成一个对象
$对象名称=new 类名称();
$对象名称=new 类名称([参数列表]);
类的名称不区分大小写
类可以在任意位置进行使用
对象类型在内存中的分配
对象和类的关系
对象是实际存在的,占用动态的资料
类是对象的兰提,可能占用静态资源
对象属性占有动态资源
类(静态)属性实际上是由类名字空间上的全局变量
性能考虑
每个对象要单独占用数据空间
增加的调用层次可能消耗执行时间
$this代表的是本对象
构造方法__construct();程序的初始化操作
析构方法__destruct();程序的后续操作



对象的封装
封装是面向对象的三大特性之一,封装就是把对象中的成员属性和成员方法加上访问修饰符,
使其尽可能的隐藏对象的内部细节,已达到对成员的访问控制(不是拒绝访问)
php5支持3中访问修饰符
public  公有
public可以修饰成员属性,也可以修饰成员方法
public修饰的成员在类的外部可以使用对象来调用,在类的内部可以this访问
如果成员方法没有使用修饰词,默认是public修饰


protectede 受保护的
protected修饰的成员方法不允许在类的外部通过对象直接调用
protected修饰的成员可以在类的内部直接通过$this来直接进行访问使用
protected在子类的成员中可以


private 私有的
private修饰的成员属性在类的外部不允许直接通过对象访问,在类的内部可以通过$this来进行访问
private在继承中是不可以使用的

设置私有成员


私有成员的访问


_set(), _get(), _isset(), _unset();
魔术方法:
_set(); 用于替代通用的set复制方法
_get();用于替代通用的get取值方法
_isset();检测对象中的成员属性是否存在
_unset();销毁对象中的成员属性方法

注意:上面的四个魔术方法只对勒种的私有,受保护的成员属性有效,
魔术方法前的修饰符可以是公有,私有,不影响调用。
_set(); 用于替代通用的set复制方法,党对私有的或者是受保护的成员属性进行赋值的时候,会自动调用_set方法,并且要将赋值的成员属性的形成传递到第一个参数,要赋值的值传递给第二个参数。
共有的成员属性赋值不会自动调用__set方法。
当对一个不存在的成员属性进行赋值的时候也会自动调用__set();
作用:对私有的,受保护的未定义的成员属性进行赋值控制。
/****************/
if(property_exists(__CLASS__,$key)) //判断类是否存在
property_exists  //判断类是否存在
__CLASS__ //当前类

/****************/


unset()
默认情况下,受保护的类和方法是销毁不了的


继承
为什么使用继承
1,更好的体现面向对象的高可用性
2,避免代码繁多
3,体现高扩展性
什么时候使用继承
1,在功能要进行扩展的时候进行继承
2,在功能进行修改的时候使用继承
php继承的特性
1,支持单一继承,不支持多继承
2,就是一个子类只允许有一个父类
3,一个父类可以有多个子类
4,子类可以将父类可以继承的都继承下来
php继承的关键字
1,父类==基类==超类
2,子类==扩展类==派生类
权限问题
public
可以将父类中的所有publiuc成员继承下来
子类当中的成员名称如果与父类继承下来的成员名称相同,name子类当中成员会将父类当中的成员覆盖。
pretected
受保护的成员属性会被继承下来
受保护的成员方法也会记录下来
也拥有受保护的特性,外部不能调用
继承下来的成员出现重名,也是会被覆盖掉的
private
私有的成员,在子类中不能被继承
私有的方法,在子类中也不能被继承
private只能在本类中实现
父类成员的群贤一定要比子类成员的权限严格(小)
子类的权限一定要比父类的权限一定要大,不然会报错
private<protected<public
子类中重载父类的方法
重载==重写==覆盖
1,在子类里面允许重写(覆盖)父类的方法
2,在子类中,使用parent访问父类中的被覆盖的属性和方法
parent::__construct();
parent::fun();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值