由于Java中的类不能扩展多个类.我怎么能得到这个?

Bdk*_*nna 3 java extends interface class implements

我有两个类需要扩展一个类.我收到编译器错误,因为这不会发生在Java中.我知道您可以在Java中实现任意数量的接口,但只能扩展另一个类.我该如何解决这个问题?

Jef*_*man 6

使用"has A"关系而不是"is An".

class A
class B
Run Code Online (Sandbox Code Playgroud)

你(想)你想要的:

class C extends A, B
Run Code Online (Sandbox Code Playgroud)

相反,这样做:

class C {
  A theA;
  B theB;
}
Run Code Online (Sandbox Code Playgroud)

多重继承几乎总是被滥用.扩展类只是作为导入数据和方法的简单方法是不合适的.如果你扩展一个类,它应该真正是一个"是一个"的关系.

例如,假设你有课程,

class Bank extends Financial
class Calculator
Run Code Online (Sandbox Code Playgroud)

如果要使用Calculatorin 的功能,可以这样做Bank,

class Bank extends Calculator, Financial
Run Code Online (Sandbox Code Playgroud)

但是,a Bank绝对不是一个Calculator.银行使用 a Calculator,但它本身不是.当然,在java中,无论如何都不能这样做,但是你可以使用其他语言.

如果你不购买任何一个,并且你真的希望函数Calculator成为Bank接口的一部分,你可以通过Java接口来实现.

interface CalculatorIntf {
  int add(int a, int b);
}

class Calculator implements CalculatorInf {
  int add(int a, int b) { return a + b };
}

class Bank extends Financial implements CalculatorIntf
  Calculator c = new Calculator();

  @Override // Method from Calculator interface
  int add(int a, int b) { c.add(a, b); }
}
Run Code Online (Sandbox Code Playgroud)

一个类可以实现任意数量的接口.请注意,这在技术上仍然是"有A"的关系