Java如何调用盛大父母的方法?

Ark*_*aha 24 java overriding super

可能重复:
为什么是super.super.method(); Java不允许?

假设我有3个类A,B并且C每个类都扩展了前一个类.

如何调用代码A.myMethod()C.myMethod()如果B也实现myMethod

class A
{
  public void myMethod()
  {
    // some stuff for A
  }
}

class B extends A
{
  public void myMethod()
  {
    // some stuff for B
    //and than calling A stuff
    super.myMethod();
  }
}

class C extends B
{
  public void myMethod()
  {
    // some stuff for C
    // i don't need stuff from b, but i need call stuff from A
    // something like: super.super.myMethod(); ?? how to call A.myMethod(); ??
  }
}
Run Code Online (Sandbox Code Playgroud)

Tom*_*ine 18

你不能.这是故意的.

B为子类提供接口(如概念中,而不是Java关键字).它选择不直接访问功能A.myMethod.如果您需要B提供该功能,请使用不同的方法(不同的名称,制作它protected).然而,"更喜欢构图而不是继承"可能更好.