繁体   English   中英

Java重载方法和接口

[英]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) { ... }

你不需要比这更多的方法。 如果您使用ComplexNRealN值调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM