首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是Java 8中任何使用的抽象类。

是Java 8中任何使用的抽象类。
EN

Stack Overflow用户
提问于 2014-03-28 19:19:52
回答 1查看 348关注 0票数 1

我一直在阅读一些关于Java 8新特性的文章。通过引入扩展方法,即以默认关键字作为前缀并提供实现的方法。

我在这里检查了几个问题,人们询问了抽象类和接口(如one herehere )之间的差异,最大的区别似乎是抽象类允许您指定默认实现。

这是否意味着抽象类和接口之间的区别在很大程度上是表面的,并且考虑到类可以实现多个接口;它们在设计和实现方面都提供了更大的灵活性。

我可以看到,抽象类仍然存在,主要是因为它与旧代码向后兼容。我是否正确地不使用抽象类继续前进,只使用接口?如果不能提供一个示例,那么只在抽象类中定义一些字段就不算了。我正在寻找一个令人信服的用例,与接口相比,抽象类仍然是一个更合适的例子。

另一方面,纯粹主义者认为默认实现会污染接口,接口只应该指定契约,行为应该总是在具体的类中(行为的一部分可以在抽象类中)。这个论点有什么道理吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-28 19:24:03

抽象类可以有构造函数和状态。即使使用扩展方法,接口也不能有任何状态。例如,您仍然需要一个抽象类来为#getSize或#setSize方法建模基本的"size“状态。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22721400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档