如何覆盖包装类中的方法?

时间:2012-04-12 13:11:28

标签: java methods override extends implements

我定义了以下类......

class Class2 implements ICommon {
    ....
    ICommon  wrappedClass;
    //delegate interface methods to wrapped class
}

class Class1 implements ICommon {
    //interface methods
    //specific methods
    public void method1() {
        ......
    }
}

我需要Class1覆盖method1()的{​​{1}},但我仍然希望实现Class2接口。有什么方法可以实现这一目标吗?

4 个答案:

答案 0 :(得分:5)

如果不延长,则无法覆盖。 Class2必须扩展Class1,然后你才能覆盖。

class Class2 extends Class1 // no need for implements anymore, because class1 already implements
{

    @Override
    public void method1()
    {

    }
}

知道这个设计意味着每个Class2都是Class1,就像每个Ant都是Bug一样。

答案 1 :(得分:1)

class Class1 extends Class2{
     ...method1((){
          ......
       }
 }

Class2已经在实现IComm接口,因此Class1间接实现了它。

答案 2 :(得分:1)

你的意思是,只是:

class Class2 extends Class1 implements ICommon {
 ....
  ICommon  wrappedClass;
  //delegate interface methods to wrapped class

  @Override 
  public void method1 () {...}
}

那应该可以正常工作,不是吗?你甚至不需要implements ICommon,因为Class已经这样做了,我只是把它放在那里以表明它确实如此。

要明确的是,这不需要对ICommon进行任何更改。

答案 3 :(得分:1)

你可以让Class1成为一个接口......

class Class2 implements ICommon, Class1 {
    ICommon  wrappedClass;
}

interface Class1 extends ICommon {
    public void method1();
}

或者让Class1扩展Class2(通过这样做,Class1仍然实现了ICommon,因为Class2实现了ICommon)......

class Class2 implements ICommon {
    ICommon  wrappedClass;
}

class Class1 extends Class2 {
    public void method1() {
    }
}