面向对象----多态,抽象,接口
1.接口
概念:接口(interface)是抽象方法和静态常量定义的集合。
接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。
接口中没有其它类型的内容
语法:
interface 接口名{
public getName();
public setName($name);
}
在接口中的抽象函数方法只能是 public 的,默认也是 public 权限。这些函数不能添加abstract关键字,可以省略public
接口通常都是一组功能的集合
实现了某个接口,那么必须实现该接口的所有抽象的方法,但不需要定义这些方法的具体内容
一个类可以有多个借口方法
目的:变相的实现多继承
2.抽象
用 abstract 修饰的类表示这个方法是一个抽象方法。
抽象方法,只有方法的声明部分,没有方法体。
抽象方法没有 {} ,而采用 ; 结束。
一个类中, 只要有一个抽象方法, 这个类必须被声明为抽象类。
抽象方法在子类中必须被重写。
继承了带有抽象方法的类必须实现抽象方法的定义
抽象类不一定需要抽象方法,但是包含抽象方法的类必须是抽象类
抽象类不能够被实例化
3.多态
①概念:对象的多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。
②在 PHP5 中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对
象、资源等。我们无法说 PHP5 中多态的是变量。
③我们只能说在 PHP5 中,多态应用在方法参数的类型提示位置。
④一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。
⑤所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。
⑥简单的说,一个类拥有其父类、和已实现接口的身份
多态的实现:
通过实现接口实现多态
通过继承实现多态