回答
接口是行为的抽象,是抽象方法的集合,目的是API定义和实现分离。不包含任何非常量成员以及非静态方法;java8后增加了default method,java9后可以定义private defult method。比如java8中的Collection增加了一系列关于Lambda、Stream的default method。
抽象类是不能被实例化的类,主要目的是代码重用。
S.O.L.I.D原则
面向对象编程的设计原则:
- 单一职责;
- 开关原则:设计要对扩展开放,对修改关闭;
- 里式替换:凡是可以用父类的地方,都可用子类替换;
- 接口分离:不要将太多方法放在一个接口,如果太多,需要分离为功能单一的多个接口;
- 依赖反转:高层次模块不应依赖于低层次模块。
原文
http://yizhanggou.top/tan-tan-jie-kou-he-chou-xiang-lei-you-shi-yao-qu-bie/