В настоящий момент я работаю над учебником, который определяет чистый метод:
" статический метод, который зависит только от его параметров и других данных"
Было бы невозможно, чтобы метод экземпляра был чистым методом, не будучи статическим (если он не изменяет параметры и не имеет "побочных эффектов", например, печать)?
Я знаю, что чистый метод должен быть чистым, возвращаемое значение зависит только от параметров, а не от какого-либо другого состояния, поэтому, возможно, метод методов экземпляра означает, что переменные, взятые из объекта, вызывающего метод, не считаются параметры, но как другое "состояние"?
Помимо этого, я не могу думать о какой-либо причине, почему нестатический метод не может быть чистым методом.
Вот пример:
public class Rational {
private int numer;
private int denom;
public Rational() {
this.numer = 0;
this.denom = 1;
}
public Rational(int numer, int denom) {
this.numer = numer;
this.denom = denom;
}
}
Вышеупомянутый определяет класс Rational
Затем вы могли бы написать метод в классе Rational
который возвращает объект Rational
как double
либо "Метод один", либо "Метод два" ниже.
Первый метод:
public double toDouble() {
double x = this.numer;
double y = this.denom;
double fprat = x / y;
return fprat;
}
Второй способ:
public static double toDouble(Rational rational)
{
double x = rational.numer;
double y = rational.denom;
double fprat = x / y;
return fprat;
}
Они по сути делают одно и то же, но одно - статический метод, а другой - метод экземпляра, поэтому их вызовы будут в другом формате. Метод второй, безусловно, является чистым методом, но не будет ли метод один, который не является статичным, также как чистый метод в этих условиях?