我定义了以下类......
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
接口。有什么方法可以实现这一目标吗?
答案 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() {
}
}