【发布时间】:2015-08-10 22:24:03
【问题描述】:
根据 JLS 的“8.1.1.1”部分,我们有:
如果满足以下任一条件,则 C 类具有抽象方法:
• C 的任何成员方法(第 8.2 节)——无论是声明的还是继承的——都是 摘要。
• C 的任何超类都有一个通过包访问声明的抽象方法, 并且不存在覆盖来自 C 或来自的抽象方法的方法 C的超类
有趣的是,为什么我们在这里有第二个选项。特别是,为什么我们有确切的“包访问权限”。那么“公共”或“受保护”方法呢?
【问题讨论】:
-
这基本上是说你的类是抽象的,直到你为你的所有抽象方法提供具体的实现(你的类中显式的方法,或者来自父类的隐式方法)。请记住:“包范围”是指您不指定“公共”或“受保护”或“私有”;它在包内的任何地方都可见,而在包外不可见。
标签: java inheritance abstract