对于1,答案是肯定的.它足以为类中的方法提供一个实现,以便自动实现两个接口.
对于2,如果您需要两个方法,那么您的类不应该实现这两个接口.但是,你可以使用一个技巧:
interface IOne {
void method();
}
interface ITwo {
void method();
}
public class A
implements IOne, ITwo {
// Anonymous inner class that implements ony IOne
private final IOne one = new IOne() {
@Override
public void method() {
System.out.println("IOne");
}
};
// Anonymous inner class that implements ony ITwo
private final ITwo two = new ITwo() {
@Override
public void method() {
System.out.println("ITwo");
}
};
@Override
public void method() {
System.out.println("A");
}
// Method that delegates to IOne
public void methodIOne() {
this.one.method();
}
// Method that delegates to ITwo
public void methodITwo() {
this.two.method();
}
}
测试代码:
A a = new A();
a.method(); // A
a.methodIOne(); // IOne
a.methodITwo(); // ITwo
A类不需要实现两个接口.在这种情况下,只是不要在A上实现method()并只保留匿名内部类.