PHP中的抽象类和接口

2017-01-13 19:11:23来源:CSDN作者:qq_29631251人点击

第七城市

抽象类

PHP5支持抽象类和抽象方法,类前加abstract,此类变成了抽象类,无法被实例化,此类天生就是用来被继承的,给子类提供一个模板;

方法前加abstract,是抽象方法,抽象方法不能有方法体,即不能有{};

抽象类的特点:

1.类中至少有一个抽象类,则此类一定要声明为abstract,否则会报错。

2.抽象类中的方法不一定都是抽象方法。

3.决定类能不能被实例化取决于其是不是抽象类,就是类中的方法全部都是具体的方法,但是类本身被声明为abstract,也不能被实例化。

4.抽象类中全是具体方法,但是抽象类又不能被实例化,又想用其中的方法时,就可以通过继承他或者通过类来调用。

5.抽象类是用作被继承的类,所以其中的方法必须是public或者protected。又由于子类继承父类不能令其权限越来越严格的规则,其子类也必须是public或者protected。

6.如果一个非抽象类继承抽象类,则必须要实现抽象类的所有抽象方法,但是如果一个抽象类继承一个抽象类的话,可看做抽象子类是抽象父类的扩展的抽象类。

接口

1.接口是某类事物功能的抽象,本身方法默认全部是抽象的,不能有方法体。

2.implements实现接口中的所有方法,还可以增加其他的一些方法。

3.接口是可以继承的。

4.接口是一堆方法的说明,不能加属性,但是可以定义常量,常量是不能被覆盖的,访问的方法时接口名::常量名或者self::常量名。

5.接口的方法必须是public。

6.类可以实现多接口。

区别

1.对接口的使用是通过implements。对抽象类的使用是通过extends。接口也可以用extends,但是最好用implements。

2.接口中不可以声明成员变量,但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。

3.接口中只有抽象方法,没有具体方法,抽象类可以有具体的方法。

4.接口中的方法默认都是public类型的。抽象类中的方法可以使用protected,public来修饰。

5.一个类可以同时实现多个接口,但是一个类只能继承一个抽象类。


第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台