为什么Rational是add方法返回的类型? - Java

时间:2017-01-14 12:47:16

标签: java return-type

为什么Rational是add方法返回的类型?

我理解一个方法何时返回一个类型,如void,int或String,但我不明白为什么是Rational。

理性课程:

public class Rational {

    private int num;
    private int den;

    public Rational(int numerator, int denominator) {

        this.num = numerator;
        this.den = denominator;

    }

    public Rational add(Rational b) {

        int numerator   = (this.num * b.den) + (this.den * b.num);
        int denominator = this.den * b.den;

        return new Rational(numerator, denominator);        
    }
}

主要课程:

public class Main {

    public static void main(String[] args) {

        // 1/2 + 1/3 = 5/6
        Rational obj1 = new Rational(1, 2);
        Rational obj2 = new Rational(1, 3);
        Rational obj3 = obj1.add(obj2);   
    }
}

2 个答案:

答案 0 :(得分:0)

  

为什么Rational是add方法返回的类型?我明白   当一个方法返回一个类型,如void,int或String但我没有   看看为什么理性。

voidintString是JDK预定义类型。 在方法中,您可以返回所需的任何类型:预定义类型以及自定义类型。

在您的示例中,add(Rational b)方法具有无副作用的实现。该方法不会修改参数并返回由计算产生的{strong> new 实例Rational

如果你不在方法中返回Rational对象,你想如何获得它? 返回包含两个int的{​​{1}}数组是不可取的。它不是一种表示信息的结构化方式,因为您没有封装相关数据,所以它很笨拙。

答案 1 :(得分:0)

在您的情况下,Rational实现为immutable object,这意味着实例的值在创建后无法更改。

因此,为了获得像add()这样的操作的结果,因为它无法更新当前实例的值,所以它需要创建并返回一个新实例,该实例已通过更新的值它的构造函数。

编辑:假设您的对象意图以不可变的方式使用,您应该将final修饰符添加到其私有字段,以确保它们不会被意外地分配到构造函数中的任何位置。< / p>