一、目标:
清除重复代码
二、实现:
1. 将重复代码提取出来
2. 建立联系 extends 关键字 词义是扩展 用于继承
三、什么是父类 和子类
被继承的类 成为父类(基类)
继承其他类的类 成为 子类 (派生类)
四、继承的特性(重点重点)
a) php只支持单继承 只能有一个爹
b) php可以被多个继承 一个爹可以有多个儿子
c) php支持多层继承 可以有祖孙关系
B继承A,C继承B ,那么C里面就有ABC三个类里面的所有内容
d) 子类会拥有父类中的所有内容但是有部分内容无法访问(封装)
五、属性继承(重写 重构)
- 子类里面的属性会覆盖父类中的同名属性
- 访问属性的时候一定是最终结果(被子类覆盖的结果,除了私有的)
- 权限只能扩大 不能缩小
父类 | 子类 |
public | public |
protected | public protected |
private | public protected private |
六、方法继承(重写 重构)
- 子类里面的方法会覆盖父类中的同名方法
- 访问方法的时候一定是最终的结果(被子类覆盖之后的结果 除了私有的)
- 重写的时候 参数结构(参数个数 和参数是否有默认值)建议保持一致
- 权限只能扩大 不能缩小
父类 | 子类 |
public | public |
protected | public protected |
private | public protected private |
5.可以调用父类中的方法 需要使用范围操作符
:: A::say() parent::say()
parent 代表的是父类
要求: 重写构造方法的时候 务必在第一行调用父类中的构造方法
七、关键字
- final (最终的)(掌握)
final 可以修饰类和方法
被修饰的类不能被继承
被修饰的方法不能重写
2.static
a) 可以修饰属性和方法 不能修饰类
b) 静态成员需要使用范围操作符来访问 A::$name 如果你访问的是静态属性一定要加上$ A::say()
c) 静态的成员方法里面不能出现非静态内容 $this 和非静态成员
d) 静态方法里面只能使用静态属性
3.const
可以在类里面定义常量
值保留类里面的属性默认值特性
类里面定义的常量 需要使用范围操作符类访问
A::DB B::DB
4.define
不能在类里面定义常量
5.运算符 instanceof
判断前面的这个对象是否是后面这个类的实例
祖辈关系都行