面向对象三大特征:
封装, 继承, 多态
类:
类(属性, 方法), 对象, 方法覆盖,
静态 (属性 / 方法) 静态成员被这个类的每个实例对象所共享, 可以用 self 访问
在类里面定义常量使用的是 "const" 这个关键字, 用 "const" 修饰的成员属性的访问方式和 "static" 修饰的成员访问的方式差不多, 也是使用 "类名", 在方法里面使用 "self" 关键字. 但是不用使用 "$" 符号, 也不能使用对象来访问.
抽象类
抽象方法, 所谓的没有方法体指的是, 在方法声明的时候没有大括号以及其中的内容, 而是直接在声明时在方法名后加上分号结束, 另外在声明抽象方法时还要加一个关键字 "abstract" 来修饰;
只要一个类里面有一个方法是抽象方法, 那么这个类就要定义为抽象类, 抽象类也要使用 "abstract" 关键字来修饰;
抽象类不能产生实例对象
子类必须把父类中的抽象方法全部都实现, 否则子类中还存在抽象方法, 那么子类还是抽象类, 还是不能实例化类;
接口
PHP 与大多数面向对象编程语言一样, 不支持多重继承. 也就是说每个类只能继承一个父类. 为了解决这个问题, PHP 引入了接口, 接口的思想是指定了一个实现了该接口的类必须实现的一系列方法. 接口是一种特殊的抽象类, 抽象类又是一种特殊的类, 所以接口也是一种特殊的类, 为 什么说接口是一种特殊的抽象类呢? 如果一个抽象类里面的所有的方法都是抽象方法, 那么我们就换一种声明方法使用 "接口"; 也就是说接口里面所有的方法必须 都是声明为抽象方法, 另外接口里面不能声明变量(但可声明常量 constant), 而且接口里面所有的成员都是 public 权限的. 所以子类在实现的时候 也一定要使用 public 权限实限.
声明一个类的时候我们使用的关键字是 "class", 而接口一种特殊的类, 使用的关键字是 "interface";
因为接口是一种特殊的抽象类, 里面所有的方法都是抽象方法, 所以接口也不能产生实例对象; 它也做为一种规范, 所有抽象方法需要子类去实现.
我们可以使用 "extends" 关键字让一个接口去继承另一个接口
这个抽象类还要有子类把它所有的抽象方法都实现才行;
来源: http://www.bubuko.com/infodetail-2758689.html