Если бы вы просто набрали
public Fraction(Fraction other) {
}
Java не просто догадывается, что вы хотите скопировать значения other
в новый объект.Java автоматически не инициализирует ваши переменные для вас.Чтобы это был конструктор копирования, вам все равно придется вручную напечатать код, который копирует поля из other
в создаваемый вами объект.Например:
public Fraction(Fraction other) {
num = other.num;
denom = other.denom;
}
Конструктор создает новый Fraction
, но именно код, который вы вводите внутри, вручную выполняет «копирование», что делает его «конструктором копирования» и позволяет вам делать
Fraction a = Fraction(4, 20);
Fraction b = new Fraction(a);
// b has the same values as a but is a different object
Конечно, если у вас уже есть другой конструктор, более короткий способ создать конструктор копирования -
public Fraction(int n, int d) {
num = n;
denom = d;
}
public Fraction(Fraction other) {
this(other.num, other.denom);
}