什么是面向对象?
面向对象一共有3个部分:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)。而我们常说的是面向对象编程(OOP),其实是面向对象的一部分。而认识面向对象编程之前要先了解两个重要的概念就是类和对象。
类与对象
世间万物皆对象,世间的万物我们都可以看成是对象,因为他们都有各自的属性。比如:人有身高,体重,年龄,性别等等这些属性,也可以唱歌,跳舞,跑步等等行为。
如果把人看成一个类的话,那么身高,体重,年龄,性别这些就是人这个类的属性,而唱歌,跳舞,跑步就是人这个类的行为。
面向对象编程三大特点
(1).封装性(public、protected、private)
简单形象的解释就是,把功能放在一个盒子里,要用到这个功能的时候,打开盒子,取出就可以使用。
(2).继承性(extends)
子类自动继承一个或多个父类中的属性与方法,并可以重写或者添加新的属性或方法。
这个特性简化了类和对象的创建,提高了代码的可重用性。
(3).多态性
指的是一个类可以创建多个对象,获取不同的结果。
面向对象的五大基本原则:单一职责原则;开放封闭原则;替换原则; 依赖原则; 接口分离原则。
面向对象小总结
1、$this是什么
当前类实例化的对象
2、访问对象中的成员
对象->成员
3、构造方法
通常用来初始化对象的属性,不用把属性写死,不同的对象就有了不同的属性
4、get、set的用法
通常将属性设为protected,利用getXxx和setXxx方法来设置和获取属性的值,避免外部随意的更改,同时还可以对对象进行过滤
5、类的封装
public方法可以在类外访问,相当于提供给外部的接口
private方法只能在类内(即类的大括号内),外部不能直接访问,只能通过其他public方法来调用,就像电脑的开关,按电源键就可以开机,你不用知道它背后一系列的运转
protected,同private,不过可以在其他的类中继承
6、类的继承与重写 (extends)
继承的类可以访问父类的public和protected方法或属性,避免了代码的重写
继承的类重写父类的方法只需取与父类同样的方法名,在里面写自己的代码即可
7、抽象类(abstract)
抽象类是用来继承的,不能直接实例化,抽象方法不用写方法体
作用是硬性的规定子类需要实现的方法,不实现不能实例化
8、接口(interface)
继承使用implements
保证代码的一致性
9、命名空间与自动加载(namespace)
避免重名冲突,避免每次使用类前require的操作
申明类前有namespace 文件位置
namespace app/Admin;
使用类前有use namespace/类名
use app/Admin/User;
10、静态变量和静态方法
可以看作是全局性的方法
不用实例化对象即可使用
使用方法:类名::成员
11、const变量
const主要是用于一些硬性的规定数据和约定俗成的数据码上面,可在类外使用,只能在定义处修改,比如我们的http状态码
定义:const ABC=12;
使用:类名::ABC;