假设我有三个班级:
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中的代码。
有办法做到这一点吗?
答案 0 :(得分:2)
简短的回答是否定的。您所看到的是您的设计存在缺陷。它表明您也需要将A类中的代码移动到辅助类中。然后B和C将通过组合使用它。您可以尝试使用partials来获得所需的行为。有关详细信息,请参阅此链接。 Partial function application in Java 8
答案 1 :(得分:2)
您可以在C中实例化A类对象并调用方法方法
class C extends B
{
@Override
public void method()
{ /* I want to use the code specific to A without using B */
A test = new A();
test.method();
}
}

不确定这是不是你的意思。同样,你忘记了A类中的方法名称方法。
答案 2 :(得分:1)
没有办法做到这一点。您只需在类B
中创建另一个方法,该方法执行A
方法的代码,并在子类C
中调用该方法。