Java中的多重继承解决方案? 接口IA{ 公共无效a(); } AB类实现IA{ @凌驾 public void a(){System.out.println(“a”);}/
您可以将Java中的多重继承解决方案? 接口IA{ 公共无效a(); } AB类实现IA{ @凌驾 public void a(){System.out.println(“a”);}/,java,design-patterns,Java,Design Patterns,您可以将a作为默认方法: 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.pr
a
作为默认方法:
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"
}
}
除其他选项外,您还可以使用合成和委派:
interface IA {
public default void a(){ System.out.println("a"); }
}
Java8引入了“默认方法”的概念但是在这之前,你没有办法。这是一个快速的方法,但是我个人不喜欢默认的方法被添加到java中,当使用不当时,可能会造成混乱。如果你这样做,一定要确保在开发过程中保持清晰的代码结构。谢谢。我已经进入C++ LLA了。这是真的,但我仍然不认为我们可以称之为多重继承。对于接口和类,仍然有很多限制,比如定义构造函数、访问除局部变量以外的变量等。这是多重继承和无多重继承之间的一种折衷。但是,是的,它确实增加了f引用在两个接口中定义的相同方法。@Mustafasabir同意(而且对于记录,我从未将其视为多重继承)
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(); }
}