【发布时间】:2011-03-28 05:41:51
【问题描述】:
假设我有 A、B 和 C 三个班级。
- B 扩展 A
- C 扩展 B
都定义了public void foo() 方法。
现在我想从 C 的 foo() 方法调用 A 的 foo() 方法(不是它的父 B 的方法,而是超超类 A 的方法)。
我试过super.super.foo();,但它的语法无效。
我怎样才能做到这一点?
【问题讨论】:
-
只是因为有人应该问,如果你似乎希望它直接扩展 A,为什么 C 扩展 B? (我想还有其他部分你依赖 B 的功能,或者什么)
-
只有当 B 不覆盖 A 的 foo() 时,才能使用 super.foo() 从 C 调用 A 的 foo()。
-
Effective Java 第 2 版,第 16 条:优先组合优于继承。另外,查看装饰器模式;它可能更适合您的需要。
标签: java inheritance overriding