【发布时间】:2011-11-13 20:26:11
【问题描述】:
在 Java 中...
我正在创建一个包含方法 doAction() 的类 Foo。我的要求:
- doAction() 在 Foo 中必须有一个默认实现(即函数体)。
- Foo 的所有子类都必须覆盖 doAction(),这意味着如果子类不提供新的实现,它们将获得编译器错误。
- 我需要能够实例化 Foo。
abstract 可以,但它不允许我为 doAction() 指定函数体。
【问题讨论】:
-
吃蛋糕还是吃蛋糕;不能两者兼得……
-
为什么必须
doAction()有一个默认实现,如果它只是被子类忽略? -
我需要自己运行/测试基类。
-
@frankadelic 我不建议在基类中添加专门用于测试的代码。这是不好的做法,会让未来的开发人员感到困惑,而且很难维护。你需要的是一个像 Rhino Mocks 这样的 Mocking 框架,为了测试目的,你可以指定你想要返回的内容。
标签: java oop inheritance overriding