PHP抽象类与接口

2019-10-07  本文已影响0人  wyc0859

如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。
如果要创建将由一些不相关对象采用的功能,就使用接口。
如果必须从多个来源继承行为,就使用接口。
如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。

abstract跟interface的区别

接口没有数据成员,但是抽象类有数据成员,抽象类可以实现数据的封装。
接口没有构造函数,抽象类可以有构造函数。
接口中的方法都是public类型,而抽象类中的方法可以使用private、protected或public来修饰。
抽象类中可以有抽象方法,也可以有普通方法
一个类可以同时继承多个接口,但是只能继承一个抽象类。

何时用接口 何时用抽象类

1、如果所有抽象出的方法不确定性很高,就定义为接口来封装,所有方法抽象,由实现类全部实现
2、如果部分抽象出的方法不确定性很高,就定义为抽象类来封装,能确定的方法实现,不确定的方法抽象,由实现类部分实现,部分重写(不变就不用重写)
3、如果所有抽象出的方法确定性很高,就定义为基础类,所有方法提供基本实现,由子类去重写(不变就不用重写子类)
4、如果需要多继承那肯定是接口
5、如果为了规范子类,那就用抽象类,毕竟是继承。
6、如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。
7、如果要创建将由一些不相关对象采用的功能,就使用接口。

上一篇下一篇

猜你喜欢

热点阅读