面向对象高级学习路径
一、面向对象三大特性
- 封装
- 继承
- 多态
1、封装:
将数据(属性和静态属性)和对数据的操作(方法)捆绑到一起,形成对外界的隐蔽,同时对外提供可以操作的接口(即供外部访问的类成员public)
封装的目的(作用):
- 让使用者只知道类能做什么,而不知道怎么做
- 明确类与对象的职责:类负责处理业务逻辑,对象只要实现调用
2、继承:
子类合法拥有父类的某些权限
- 继承必须满足继承关系:即存在合理的包含关系
- 继承的本质是子类通过继承可以直接使用父类已经存在的数据和操作
继承的目的(作用):
- 面向对象中实现代码复用的重要特性
- 指子类可以直接访问父类中已存在的成员
- 可以节省代码工作,允许子类进行扩展,即在子类中增加父类不存在的功能
3、多态:
指相同的操作或函数,过程可作用于多种类型的对象上并获得不同的结果
- 需要发生类的继承,同时出现方法重写,即子类和父类拥有同名方法
- 实例化对象的时候让父类对象指向子类对象(强制类型,PHP是弱类型语言不支持多态)
- 结果:父类对象表现子类对象的特点
二、继承
1、基本语法:
class man extends human{}
2、有限继承:
继承内容:父类共有成员、受保护(protected)成员和私有属性,私有方法不能继承
3、子类访问父类私有成员:前提是父类提供了能够访问私有成员的接口,即提供了公有或受保护的方法给子类访问
4、静态成员由类进行访问
5、构造方法和析构方法也可以被子类继承
三、重写
1、子类可以重写父类任意成员
- 属性:直接覆盖,父类对象的属性将不存在
- 方法:同时存在
2、通常写是用来重写父类的方法,用于扩展或者更改某些业务逻辑
3、重写要求:
- 子类对于成员的控制权不能高于父类
- 重写方法时,参数要求与父类一致