В настоящее время я работаю с учебником, в котором чистый метод определяется как:
"метод статический , который зависит только от его параметров и никаких других данных"
Разве невозможно, чтобы метод экземпляра был чистым методом без статичности (если он не изменяет параметры и не имеет «побочных эффектов», таких как печать)?
Я знаю, что если чистый метод является чистым, возвращаемое значение зависит только от параметров, а не от какого-либо другого состояния, поэтому, возможно, способ вызова методов экземпляра означает, что переменные, взятые из объекта, вызывающего метод, не учитываютсяв качестве параметров, но как другое «состояние»?
Кроме этого, я не могу представить себе причину, по которой нестатический метод не может быть чистым методом.
Вот пример:
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;
}
По сути, они делают одно и то же, но один - статический метод, а другой - метод экземпляра, поэтому их вызовы будут в другом формате.Второй метод, безусловно, является чистым методом, но будет ли метод Один, который не является статичным, также определен как чистый метод в этих обстоятельствах?