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

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

解决方法:

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

class A
class B

你(想)你想要的:

class C extends A, B

相反,这样做:

class C {
  A theA;
  B theB;
}

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

例如,假设你有课程,

class Bank extends Financial
class Calculator

如果要使用Bank中的Calculator函数,可以执行此操作,

class Bank extends Calculator, Financial

但是,银行绝对不是计算器.银行使用计算器,但它本身不是计算器.当然,在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); }
}

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

上一篇:Java 继承


下一篇:java – 使用泛型编译错误