扩展多个接口的接口

时间:2020-06-02 09:43:03

标签: spring interface spring-bean

我正在使用spring并且有2个界面,

interface A {
    public void a();
}

interface B {
    public void B();
}

及其实现

class AImpl implements A {
    public void a(){ // TODO }
}
class BImpl implements B {
    public void b(){ // TODO }
}

现在我创建一个接口C

    interface C extends A, B {}

有什么方法可以使用AImpl和BImpl的方法定义来获取类型C的bean

1 个答案:

答案 0 :(得分:1)

您不能创建扩展AImpl和BImpl的CImpl,因为Java不支持类的多重继承。

但是您可以执行以下操作:

class CImpl implements C {
    private A a;
    private B b;

    public CImpl(A a, B b) {
        this.a = a;
        this.b = b;
    }

    public void a() {
        a.a();
    }

    public void b() {
        b.b();
    }
}

并使用以下命令创建您的CImpl:

CImpl c = new CImpl (new AImpl(), new BImpl());

如果使用Spring(如您的标签所示),则可以将AImpl,BImpl和CImpl配置为Bean,并为CImpl的构造函数使用自动装配。