【发布时间】:2015-05-10 23:57:15
【问题描述】:
谁能解释JLS §8.4.8.4中提到的“严格的default-abstract和default-default冲突规则”。
它们是否在 JLS 中定义?我似乎找不到他们的定义。
【问题讨论】:
标签: java inheritance java-8 jls
谁能解释JLS §8.4.8.4中提到的“严格的default-abstract和default-default冲突规则”。
它们是否在 JLS 中定义?我似乎找不到他们的定义。
【问题讨论】:
标签: java inheritance java-8 jls
我可能是错的,但这就是我对那部分的解释。
“default-default”和“default-abstract”不是关键字。它们描述了与接口中的默认方法有关的两种不同的编译冲突规则。
“default-default”与实现两个或多个接口的类有关,这些接口提供覆盖等效方法的默认实现,但不提供自己的实现。
“default-abstract”与实现一个提供默认实现的接口和一个或多个不提供重写等效方法的默认实现的接口的类有关。
这两条规则的例外是,如果相关类的超类指定了一个抽象方法,该方法可替代任何实现接口中的定义。
如果类从超类继承了具体的重写等效方法或定义了自己的方法,则这些冲突都不适用。
【讨论】: