public static Fraction add(Fraction f1,Fraction f2){
return new Fraction(f1.numerator*f2.denumerator+f2.numerator*f1.denumerator,
f1.denumerator*f2.denumerator);
}
- это метод класса (из-за static
ему не нужен экземпляр для вызова "on").
Создание этого метода экземпляра будет выглядеть как
public Fraction add(Fraction other){
return new Fraction(this.numerator*other.denumerator+other.numerator*this.denumerator,
this.denumerator*other.denumerator);
}
конечно, вам на самом деле не нужно писать this
s, просто они подчеркивают, что f1
стал текущим объектом, а f2
стал единственным аргументом.
Тогда вы можете использовать его как
Fraction HALF = new Fraction(1, 2);
Fraction THREE_FIFTH = new Fraction(3, 5);
System.out.println(HALF.add(THREE_FIFTH));
без повторения HALF
(как HALF.add(HALF,THREE_FIFTH)
в исходном коде).
Дополнительный комментарий: методы класса (static
вещи) могут если имя будет передано через имя класса, ваш исходный код будет более условно вызываться в форме Fraction.add(...)
:
System.out.println(Fraction.add(HALF,THREE_FIFTH));
(System.out.println()
знает, что он должен вызывать toString()
, так что вы на самом деле не нужно сделать это самостоятельно)