【发布时间】:2015-01-14 18:06:42
【问题描述】:
假设我有三个班级:
class A
{
public void method()
{ /* Code specific to A */ }
}
class B extends A
{
@Override
public void method()
{
/*Code specific to B*/
super.method();
}
}
class C extends B
{
@Override
public void method()
{ /* I want to use the code specific to A without using B */ }
}
在这种情况下,目标是使用 A 中的代码而不使用 B 中的代码。我认为有一种方法可以通过调用 super 方法来实现,但这也引入了 B 中的代码。
有没有办法做到这一点?
【问题讨论】:
-
我不认为有一种语言结构可以做到这一点,但你可以通过一些重构来做到这一点。
-
我从你那里得到的最直接的问题是,“为什么?”如果您不想使用
B的构造函数中发生的事情,那么为什么C扩展B而不是A?当您遇到此类问题时,您需要退后一步并重新检查您的方法是否真的是最清晰和最直观的。 -
对不起,不是构造函数,而是方法。虽然不同,但同样的问题仍然适用。
-
我问的原因是我用于我正在构建的应用程序的框架具有多次继承的类。我无法直接对这些类进行更改,但我需要访问超类中的方法,而不使用中间超类中的代码。如果这有意义的话。
标签: java inheritance methods