我一直在阅读一些关于Java 8新特性的文章。通过引入扩展方法,即以默认关键字作为前缀并提供实现的方法。
我在这里检查了几个问题,人们询问了抽象类和接口(如one here和here )之间的差异,最大的区别似乎是抽象类允许您指定默认实现。
这是否意味着抽象类和接口之间的区别在很大程度上是表面的,并且考虑到类可以实现多个接口;它们在设计和实现方面都提供了更大的灵活性。
我可以看到,抽象类仍然存在,主要是因为它与旧代码向后兼容。我是否正确地不使用抽象类继续前进,只使用接口?如果不能提供一个示例,那么只在抽象类中定义一些字段就不算了。我正在寻找一个令人信服的用例,与接口相比,抽象类仍然是一个更合适的例子。
另一方面,纯粹主义者认为默认实现会污染接口,接口只应该指定契约,行为应该总是在具体的类中(行为的一部分可以在抽象类中)。这个论点有什么道理吗?
发布于 2014-03-28 19:24:03
抽象类可以有构造函数和状态。即使使用扩展方法,接口也不能有任何状态。例如,您仍然需要一个抽象类来为#getSize或#setSize方法建模基本的"size“状态。
https://stackoverflow.com/questions/22721400
复制相似问题