使用“has A”关系而不是“is An”。
class A
class B
你(认为)你想要:
class C extends A, B
相反,请执行以下操作:
class C {
A theA;
B theB;
}
多重继承几乎总是被滥用。仅将扩展类作为导入其数据和方法的简单方法是不合适的。如果你扩展一个类,它应该真正是一个“is An”关系。
例如,假设你有课,
class Bank extends Financial
class Calculator
如果您想使用以下功能,您可以这样做Calculator
in Bank
,
class Bank extends Calculator, Financial
然而,一个Bank
绝对不是Calculator
。一个银行uses 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); }
}
一个类可以实现任意多个接口。请注意,这在技术上仍然是“有 A”关系