在 Java 9 中是不是有充分的理由使用带有新接口的抽象类? [复制]

Posted

技术标签:

【中文标题】在 Java 9 中是不是有充分的理由使用带有新接口的抽象类? [复制]【英文标题】:Is There Any Good Reason to Use Abstract Class with New Additions to Interfaces in Java 9? [duplicate]在 Java 9 中是否有充分的理由使用带有新接口的抽象类? [复制] 【发布时间】:2018-03-13 22:04:08 【问题描述】:

自从 Java 9 发布以来,还有什么好的理由再使用抽象类吗?从现在开始,您似乎可以使用接口做所有事情,而且您可以使用接口进行多重继承。

Java SE 9: Interfaces

常量变量 抽象方法 默认方法 静态方法 私有方法 私有静态方法

我错过了什么吗?除了向后兼容之外,找不到任何好的理由。

【问题讨论】:

大量抽象类包含实例级字段,因此无法转换为等效接口。也许您想强制从特定的超类继承,以保证您对它的某些内部具有包级别的访问权限。第二种情况可能不太常见,但您可以看到它在 JDK 的某些部分中使用(例如,在套接字选择器 API 中)。 【参考方案1】:

确实,你错过了一些东西:

非常量变量 受保护的和包私有的方法

一般来说,您不必仅仅因为可以使用某项功能。尤其要小心多重继承。它会使事情变得非常迅速。

【讨论】:

以上是关于在 Java 9 中是不是有充分的理由使用带有新接口的抽象类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

是否有充分的理由避免在 JS 中没有最终表达式的 FOR 循环?

在 2017 年使用 Meteor 有充分的理由吗? [关闭]

使用 SQL 视图的充分理由是啥?

是否有充分的理由在单平台系统上使用 .proto 文件?

是否有充分的理由为 DialogFragments 使用子片段管理器?

是否有充分的理由在 C 中始终将定义括在括号中?