为什么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);
}
}
答案 0 :(得分:0)
为什么Rational是add方法返回的类型?我明白 当一个方法返回一个类型,如void,int或String但我没有 看看为什么理性。
void
,int
或String
是JDK预定义类型。
在方法中,您可以返回所需的任何类型:预定义类型以及自定义类型。
在您的示例中,add(Rational b)
方法具有无副作用的实现。该方法不会修改参数并返回由计算产生的{strong> new 实例Rational
。
如果你不在方法中返回Rational
对象,你想如何获得它?
返回包含两个int
的{{1}}数组是不可取的。它不是一种表示信息的结构化方式,因为您没有封装相关数据,所以它很笨拙。
答案 1 :(得分:0)
在您的情况下,Rational
实现为immutable object,这意味着实例的值在创建后无法更改。
因此,为了获得像add()
这样的操作的结果,因为它无法更新当前实例的值,所以它需要创建并返回一个新实例,该实例已通过更新的值它的构造函数。
编辑:假设您的对象意图以不可变的方式使用,您应该将final
修饰符添加到其私有字段,以确保它们不会被意外地分配到构造函数中的任何位置。< / p>