Quel est le but de ce code?
public Fraction(Fraction other) {
num = other.num;
denom = other.denom;
}
Si vous avez un constructeur comme ceci:
public Fraction(int n, int d) {
num = n;
denom = d;
}
Pourquoi avez-vous d'initialiser other.num
à num
et other.denom
à denom
. Ce qui est avec la syntaxe du constructeur de copie? Quel est le but?
Si vous deviez taper simplement
public Fraction(Fraction other) {
}
Java ne va pas simplement de deviner que vous voulez copier les valeurs de other
dans le nouvel objet. Java n'initialise pas automatiquement vos variables pour vous comme ça. Pour que ce soit un constructeur de copie, vous devez toujours taper manuellement le code qui copie les champs de other
l'objet que vous créez. Comme ça:
public Fraction(Fraction other) {
num = other.num;
denom = other.denom;
}
Le constructeur crée un nouveau , Fraction
mais il est le code que vous tapez à l' intérieur qui effectue de manuellement la « copie » qui en fait un « constructeur de copie » et vous permet de le faire
Fraction a = Fraction(4, 20);
Fraction b = new Fraction(a);
// b has the same values as a but is a different object
Bien sûr, si vous avez déjà un autre constructeur, un chemin plus court pour faire un constructeur de copie est
public Fraction(int n, int d) {
num = n;
denom = d;
}
public Fraction(Fraction other) {
this(other.num, other.denom);
}