Java中实现两复数相加相减

如何用一个变量来实现两复数的实部相加相减
,以及虚部的相加相减


import java.math.BigDecimal;

public class ComplexNumber {

    private final BigDecimal realPart;
    private final BigDecimal imaginaryPart;

    public ComplexNumber(BigDecimal realPart, BigDecimal imaginaryPart) {
        this.realPart = realPart;
        this.imaginaryPart = imaginaryPart;
    }

    public ComplexNumber(double realPart, double imaginaryPart) {
        this(BigDecimal.valueOf(realPart), BigDecimal.valueOf(imaginaryPart));
    }

    public ComplexNumber(int realPart, int imaginaryPart) {
        this(BigDecimal.valueOf(realPart), BigDecimal.valueOf(imaginaryPart));
    }

    public ComplexNumber add(ComplexNumber val) {
        return new ComplexNumber(realPart.add(val.realPart), imaginaryPart.add(val.imaginaryPart));
    }

    public BigDecimal getRealPart() {
        return realPart;
    }

    public BigDecimal getImaginaryPart() {
        return imaginaryPart;
    }

    @Override
    public String toString() {

        if (realPart == BigDecimal.ZERO && imaginaryPart == BigDecimal.ZERO) {
            return "0";
        }
        if (realPart != BigDecimal.ZERO && imaginaryPart != BigDecimal.ZERO) {
            return realPart + " + " + imaginaryPart + "i";
        }
        return realPart == BigDecimal.ZERO ? imaginaryPart + "i" : String.valueOf(realPart);
    }

    public static void main(String[] args) {
        ComplexNumber x1 = new ComplexNumber(1, 2);
        ComplexNumber x2 = new ComplexNumber(3, 4);
        ComplexNumber x3 = x1.add(x2);
        System.out.println(x3);
    }
}