PHP 抽象类 接口 多态

PHP 抽象类 - 一种特殊的类

接口 - 一种特殊的抽象类

多态 - 要用到抽象类和接口

声明抽象类和接口,以及声明所需要的技术

什么是抽象类


抽象方法:如果一个类中的方法,没有方法体的方法就是抽象方法,即一个方法没有使用{}直接使用分号;结束。



function test() {};//方法体为空的方法,
function test();//没有方法体的方法,


如果一个方法,就必须使用abstract来修饰。

class abc{function test() {};//方法体为空的方法,
abstract function test();}//没有方法体的方法,


抽象类:如果一个类中有一个方法是抽象的,则这个类就是抽象类。上例中就是一个抽象类。如果一个类是抽象类,必须使用abstract来修饰。

注意:
——抽象类不能去实例化一个对象,
——对象中的方法和属性除了常量和static方法都要通过对象去访问,而抽象类又不能创建对象,所以对象中成员都不能直接访问。

作用:
——要使用抽象类中的方法,就必须使用一个类去继承抽象类。而想要子类可以创建对象,子类必须就不能再是抽象类。子类可以重写父类的方法,给没有方法体的方法,给父类添加方法体。

——抽象类中的方法没有方法,子类必须是实现这个方法,父类中没写具体的实现,但是子类必须有这个方法名。就是定义一些规范,让子类按照这些规范去实现自己的功能。
目的:就是要将你写的程序模块,加入到别人写好的程序中。

接口
接口是一种特殊的抽象类。
接口和抽象的对比:
1.作用想通,都不能实例化对象,都需要子类去实例化对象。
2.接口的声明和抽象类不一样。
3.接口被实现的方式不一样
4.接口中的所有方法都是抽象方法,只能声明抽象方法,不需要用abstract修饰
5.接口中的属性只能声明常量,不能声明变量
6.接口中的成员访问权限都必须是public,抽象类中最低的权限是protected,
7.使用一个类去实现接口,不是使用extends,而是实现implements;可以使用抽象类去实现接口中的部分方法,如果想让子类可以创建对象,则必须实现接口中的全部方法。
如果之类是实现接口中的抽象方法,则使用implements,接口和接口之间使用extends去做扩展。
一个类可以在继承一个类的同时去实现一个或多个接口,但是必须先继承类再实现接口。
class A extends B implements interface A,B,C{}
8.使用implements可以实现多个interface,extends只可以继承一个父类或接口

声明方式:


interface interfaceA{
funtion a();
function b();
}
interface interfaceC{
funtion c();
function d();
}
interface interfaceB extends interfaceA{
}
class A implements interfaceA,interfaceC{
funtion a(){};
function b(){};
funtion c(){};
function d(){};
}


多态
多态是面向对象的三大特效,多态是让具有继承关系的不同对象,可以对相同名称的成员函数调用,产生不同的效果