如何从Java中继承多个基类?

Ano*_*ous 16 java multiple-inheritance

可能重复:
在Java中作弊单继承!!
为什么Java或C#中不允许多重继承?
java中的多重继承.

我知道我们可以使用接口从多个类继承,但是也可以继承状态吗?
如何从2个类继承定义方法并将它们放在Java的第三个类中?

Fab*_*ano 27

Java中不允许多重继承.请改用代理和接口

public interface AInterface {
        public void a();
}
public interface BInterface {
    public void b();
}

public class A implements AInterface {
    public void a() {}
}
public class B implements BInterface {
    public void b() {}
}

public class C implements AInterface, BInterface {
    private A a;
    private B b;

    public void a() {
        a.a();
    }
    public void b() {
        b.b();
    }
}
Run Code Online (Sandbox Code Playgroud)

从Java 8开始,可以在接口中使用默认方法.


Lau*_*ves 25

简答:你做不到.Java只有多个接口继承.

稍微长一点的答案:如果你确定你关心的方法是在接口中,那么你可以有一个实现接口的类,然后委托给"超类"的实例:

interface Noisy {
  void makeNoise();
}


interface Vehicle {
  void go(int distance);
}

class Truck implements Vehicle {
  ...
}

class Siren implements Noisy {
  ...
}

class Ambulance extends Truck implements Noisy {
  private Siren siren = new Siren();

  public makeNoise() {
    siren.makeNoise();
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

45841 次

最近记录:

9 年,5 月 前