[英]Java Overloading method and interface
我正在尝试学习 Java 我试图通过重载来解决这个问题,但是当我尝试这样做时,出现了太多方法,我该如何快速解决?
我有 ComplexN>RealN>RationalN>IntegerN>NaturalN 类,我相互扩展了这些类。 然后我创建了一个名为 Arithmetic 的接口类,用于对这些类进行算术运算。
public interface Arithmetic {
static ComplexN add(ComplexN c1,ComplexN c2) {
ComplexN complex=newComplexN(c1.getRealPart()+c2.getRealPart(),c1.getImaginaryPart()+c2.getImaginaryPart());
return complex;
}
static ComplexN add(ComplexN c1 ,RealN r1) {
ComplexN complex = new ComplexN(c1.getRealPart()+ r1.getRealPart(),c1.getImaginaryPart());
return complex;
}
我不希望重载方法一直这样下去,因为有几十种方法我希望它们全部相互处理。 我怎样才能以最短的方式解决这个问题
既然你说过,例如RealN extends ComplexN
,你不需要有单独的(Complex, Real)
方法,例如。 所有你需要的是
static ComplexN add(ComplexN c1,ComplexN c2) { ... }
static RealN add(RealN r1, RealN r2) { ... }
static RationalN add(RationalN r1, RationalN r2) { ... }
static IntegerN add(IntegerN i1, IntegerN i2) { ... }
static NaturalN add(NaturalN i1, NaturalN n2) { ... }
你不需要比这更多的方法。 如果您使用ComplexN
和RealN
值调用add
,那么这只会将RealN
值视为其超类型ComplexN
,这是正确的行为。
public class RealN extends ComplexN implements Arithmetic{ private double value;
public RealN(double realPart) {
super(realPart, 0);
this.value = super.getRealPart();
}
public double getValue() {
return value;
}
这是我的 RealN 类代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.