Я пытаюсь создать метод clone, который возьмет уже созданный Rational и сделает копию, чтобы в моем основном я мог сделать что-то вроде этого:
Rational r3 = new Rational(r1);
До сих пор я создал метод в моем классе Rational, который будет принимать рациональное значение как параметр; однако я не уверен, как сделать новый экземпляр похожим на параметр.
public Rational copy(Rational aRational) {
int newNum = aRational.n;
int newDenom = aRational.d;
return (new Rational(newNum, newDenom));
}
Любая помощь или понимание очень ценятся!
в моем основном я [хочу] сделать что-то вроде этого:
Rational r3 = new Rational(r1);
Это не клонирование, это делает конструктор, который принимает Rational
как параметр. Вы можете сделать это следующим образом:
public Rational(Rational other) {
n = other.n;
d = other.d;
}
Это позволит использовать код для создания новых экземпляров Rational
из существующих экземпляров.
Примечание. Похоже, что n
и d
в вашем классе подвергаются пользователям вашего класса как общедоступные переменные. Это не идеально, потому что у вас нет контроля над изменениями, которые пользователи вашего класса могут выполнять с его переменными экземпляра. Лучший подход заключается в том, чтобы сделать их private
, и добавить геттеры и сеттеры в ваш класс. Такой подход позволит вам обнаружить попытки установить знаменатель на ноль, что может быть желательным.
n
и d
являются частными.
n
и d
приватными, чтобы контролировать процесс их установки, а не делать его конструктором. Я отредактировал ответ, чтобы сделать эту заметку отдельным пунктом.