Heim >Backend-Entwicklung >PHP-Tutorial >在PHP中,何时用抽象类,何时用接口?
请详细说明为什么使用抽象类而不使用接口,或者为什么使用接口而不使用抽象类
请详细说明为什么使用抽象类而不使用接口,或者为什么使用接口而不使用抽象类
强调动作用接口,强调类别用抽象。
我也想过这个问题,两者确实比较像。
使用接口,你是想规定开发者(包括自己)需要实现一系列特定的类方法。
使用抽象类,你是想规定开发者(包括自己)需要实现一系列特定的类方法并且提供一些基本的类方法以供开发者使用。
另一个区别是:一个类可以实现多个接口,但是只能继承一个抽象类。如果你的代码是要规范一个很细的功能(比如Iterator
什么的),那就用接口。其他的则可以用接口也可以用抽象类。
最后,有人建议如果不知道该用接口还是抽象类,可以做的是定义一个接口然后写一个实现那个接口的抽象类。
接口是一种协定,抽象类则相当于类模板。
使用抽象类,而不要使用接口来分离协定与实现。
如果需要提供多态层次结构的值类型,使用接口。
如果一个类型必须实现多个协定,或者协定适用于多种类型,使用接口。
虽然抽象类和接口都支持将协定与实现分离开来,但接口不能指定以后版本中的新成员,而抽象类可以根据需要添加成员以支持更多功能。
优先考虑定义类,而不是接口。
事实抽象类和接口类,在应用中,有无都不影响程序运行;只是规范作用而已
比如抽象类:比如定义当前类只能继承使用,不可直接引用
接口类:最大作用就是起到规范作用。适用底层框架编写完成后。为了后续的拓展,但又得保证代码规范,一般会写接口类,以便后期开发人员规范开发!
根据特点来,如果只是制定规范用接口,里面只能定义常量和公有抽象方法
抽象类只是说不能被实例化,里面和普通类一样什么都能写,当然还可以写抽象方法
<code>抽象用于不同的事物,而接口用于事物的行为</code>
其实抽象类和接口的区别不是太大,接口里不能有自己的实现,抽象类里面可以有自己的实现,无论是接口还是抽象都是为了实现依赖抽象不要依赖具体实现的原则----**
依赖倒置的原则
**
我自己觉得php里的接口纯属扯淡
单继承多接口的情况下,接口是血统的一个关键因素,一个接口可以规定一个业务场景。。比如你是一个人,是抽象类继承过来的,你需要实现接口比如是某个公司的员工,是程序猿,这种方法类的层级相对较少。也可以某公司员工是一个抽象类继承人,然后程序猿继承某公司员工,这样。看设计上怎么做。trait和接口能在第一种模式中提供极大的重用性