面向对象的三大特征:封装、继承、多态
继承:
0.类的继承性就是从父类派生(继承)出一个子类,拥有了父类的全部属性和方法
1.继承了父类非私有的属性(私有属性可以查看,但是不可以调用)
2.继承代码格式(例:父类:[ class parent ] class Son(子类) extends(继承函数) Parent{})
3.如果一个子类的方法名和父类的方法名相同,那么子类的方法自动覆盖了父类的方法。(如果调用父类的方法,还是显示原来父类的内容,子类和父类是两个不同的类了)
4.如果子类继承之后想用父类的方法,必须要在方法体内加一个parent::方法()或者$this->方法(),推荐使用第一个种,因为第二种容易使子类和父类结构上不清。
5.如果子类和父类的方法名是一样的,那么parent::方法()是调用父类的方法,$thsi->方法()是调用子类的方法
6.对于父类的属性的引用方法是:$this->属性。属性是不能区别是父类还是子类的。(注意)
7.如果子类没有继承父类的构造和构析,则自动继承父类的构造和构析
8.如果子类继承了构造和构析,则不继承父类的构造和构析
优点:
1.复用代码
2.支持设计模式(不了解)
Final:
1.如果父类class 前添加Final,则不可以被继承
2.如果父类方法前添加Final,则方法不可以被修改
类常量:
1.关键字:Const;
2.Const 常量名(大写) =常量值;
3.类内调用
a) 类名::常量
b) $this::常量
c) Static::常量
d) Self::常量
4.类外调用:
a) 类名::常量
b) 对象::常量
静态属性
1.静态属性就是在属性前加了一个static
2.静态属性不完全属于对象(就是不可以直接调用)
静态方法
作用:
1.计算对象个数
2.单例设计模式
3.不用实例化就可以调用
4.效率是普通的4倍(还没有体验到)
5.这里方法结束后要返回值(return)
魔术方法
1.__get(*);//要加上参数
1. 读取不可以访问属性
2. 属性的值或者不返回(需要return)
3. 参数是属性名
2.__set();//要加上参数
1. 更改不可访问属性
2. 参数是属性名或者是属性值
3. 没有返回值(没有return)
3.__isset();
1. 当empty或者isset访问不可访问属性时
2. 参数是属性值
3. 返回是布尔型
4.__unset();
1. 当unset()不可访问属性时
2. 参数是属性名
3. 返回值没有,不需要Return
5.__call();
1. 调用一个不可访问的方法时
2. 方法名和参数列表(数组)
3. 自定义
6.__callStaitc();
1. 调用一个不可访问的静态方法时
2. 方法名和参数列表(数组)
3. 自定义