所有集合实现接口集合,这些集合具有特定的抽象层次结构,例如
但也有相应的接口,如Collection,List,Set.这些界面在我看来有点多余.
他们为什么在这里?是仅仅是约定还是有理由只实现接口而不扩展抽象类.
接口就在那里,因为能够在不强加实现的情况下将类型分配给变量或参数是很好的.
例如,如果我创建一个在Hibernate中使用的持久化实体,并且它有一组东西,我想为它分配一种List或Set类型.Hibernate会将我初始化它的任何列表换成自己的,使用一些特定于Hibernate的实现来执行延迟加载或其他任何需要它的东西.Hibernate开发人员可能不希望受到必须扩展抽象类的约束.
抽象类的存在是为了实现者的便利.接口是客户使用的合同.