Java:在跳过中间继承的超类时调用基类超类方法

时间:2014-11-17 18:23:10

标签: java inheritance methods

假设我有三个班级:

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中的代码。

有办法做到这一点吗?

3 个答案:

答案 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中调用该方法。