我有两个类需要扩展一个类.我收到编译器错误,因为这不会发生在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”的关系