java - Java 中的多重继承解决方法?

标签 java design-patterns

interface IA {
    public void a();
}

class AB implements IA {
    @Override
    public void a() { System.out.println("a"); } // <---.

    public void b() { System.out.println("b"); }
}

class C {
    public void c() { System.out.println("c"); }
}


// My class:
class AC extends C implements IA {
    @Override
    public void a() { System.out.println("a"); } // duplicate code 
}

public class Main {
    public static void main(String[] args) {
        AC ac = new AC();
        ac.a(); // "a"
        ac.c(); // "c"
    }
}

使用重复代码似乎不是一个好主意,我该如何正确设计我的类?

最佳答案

您可以使用组合和委托(delegate),以及其他选项:

interface IA {
    public void a ();
} 

interface IB {
    public void b ();
}

class A implements IA {
    @Override public void a () { /* code */ }
}

class B implements IB {
    @Override public void b () { /* code */ }
}

class AB implements IA, IB {
    final A a = new A();
    final B b = new B();
    @Override public void a () { a.a(); }
    @Override public void b () { b.b(); }
}

关于java - Java 中的多重继承解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24597255/

相关文章:

java - 基于两个数组按值对数组进行排序

java - 获取 @Category 在 JUnit 的一组测试中出现的次数

java - 对象层次结构的工厂(多态静态方法解决方法)

swing - 使用 JComponents 时的命令模式有用性

java - 命令模式和迭代器模式有什么区别?

language-agnostic - 接口(interface)与公共(public)类成员

java - 创建 SpecificDatumWriter<T> 时出现 NullPointerException

java - 不明白为什么我会收到 "Comparison method violates its general contract"错误

java - java中使用泛型的工厂方法模式,如何?

java - 如何使用 Process builder 从 java 运行 R 脚本