我有一个数学类,它在n数组列表中存储表达式的表示
我目前有三个类additionarray multiplearray和variable,它们都实现了我的数字接口。
public interface Number {
public Number Multiply(Number number);
在实现数字的类中,我重载了诸如乘法之类的操作
public class MultipleArray extends ArrayList implements Number{
public Number Multiply(AdditionArray number);
public Number Multiply(Number number){throw new Exception("woops");}
问题是Java在运行时不会自动调用正确的重载函数。它需要在编译时计算出来。
例如
Number someNumber = new MultipleArray();
Number someOtherNumber = new AdditonArray();
MultipleArray result2 = someNumber.Multiply(someOtherNumber); //calls the correct function
Number result2 = someNumber.Multiply(someOtherNumber); // throws the woops exception
为什么Java要这么做呢?还有其他方法可以实现这个吗?比如说工厂?
干杯,
作记号