PHP文档 接口php
http://php.net/manual/zh/language.oop5.interfaces.phpjava
PHP文档 抽象类编程
http://php.net/manual/zh/language.oop5.abstract.php设计模式
抽象和接口的区别是使用场景oop
https://blog.csdn.net/hanxueyu666/article/details/75712917.net
防止数据丢失,复制过来一份设计
接口和抽象类有什么区别对象
在应用场景下,选择使用接口和抽象类的依据是什么?blog
1、抽象类和接口在语法上的异同:继承
一、相同点
都不能被实例化
二、不一样点
第一点. 接口是抽象类的变体,接口比抽象类更加抽象,接口中全部的方法都是抽象的。
第二点. 每一个类只能继承一个抽象类,可是能够实现多个接口
第三点.抽象类中不必定都是抽象方法,抽象的而抽象类能够实现部分方法。可是接口中方法必须为public修饰的、抽象的不能实现具体的法。
第四点. 接口中基本数据类型为static 而抽象类不是的。
2、应用场景
应用都是基于规则的应用,也就是基于语法的应用,咱们能够根据语法上的异同点来总结抽象类和接口的应用场景
相同点没有什么可说的,咱们从不一样点下手。
一、第一个重要的不一样点就是,
抽象类中不必定都是抽象的方法,也能够有具体实现的方法,这样就能够把你们公用的方法提高到抽象类中,而后具体的方法能够留给子类本身实现(此处经典的应用,模板方法设计模式)。因此抽象类能够更好的实现代码的复用
二、另外一个重要的不一样就是类能够实现多个接口。
接口和抽象类的概念不同。这个能够理解为接口是对动做的抽象,抽象类是对根源的抽象(即对本质的抽象与其余类的本质不一样)。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能作什么。好比,男人,女人,这两个类(若是是类的话……),他们的抽象类是人。说明,他们都是人。人能够吃东西,狗也能够吃东西,你能够把“吃东西”定义成一个接口,而后让这些类去实现它.
因此,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),可是能够实现多个接口(吃饭接口、走路接口)。
当你关注一个事物的本质的时候,用抽象类;当你关注一个操做的时候,用接口。
另外一个重要的概念就是多态,多态经过分离作什么和怎么作,从另外一个角度将接口和实现分离出来。多态不但可以改善代码的组织结果和可读性,还能建立可扩展的程序----即不管在项目最初建立时仍是在须要添加新功能时均可以“生长”的程序。因为接口更关注于动做的实现,多态主要是分离“作什么”和“怎么作”,因此接口的另外一个重要的应用就是多态的实现(固然抽象类也能够实现多态,可是接口更加合适)。
抽象类的功能要远超过接口,可是,定义抽象类的代价高。由于高级语言来讲(从实际设计上来讲也是)每一个类只能继承一个类。在这个类中,你必须继承或编写出其全部子类的全部共性。虽然接口在功能上会弱化许多,可是它只是针对一个动做的描述。并且你能够在一个类中同时实现多个接口。在设计阶段会下降难度的。
(参考:http://blog.csdn.net/fenglibing/article/details/2745123, 《java编程思想》)