No entiendo cómo funcionan constructores de copia en detalle

Iniciar sesión :

¿Cuál es el propósito de este código?

public Fraction(Fraction other) {
    num = other.num; 
    denom = other.denom; 
}

Si usted tiene un constructor de esta manera:

public Fraction(int n, int d) {
    num = n;
    denom = d;
}

¿Por qué tiene que inicializar other.numa numy other.denoma denom. ¿Qué pasa con la sintaxis del constructor de copia? ¿Cuál es el propósito?

Leo Aso:

Si tuviera que escribir simplemente

public Fraction(Fraction other) {
}

Java no es simplemente va a suponer que desea copiar los valores de otheren el nuevo objeto. Java no inicializa automáticamente sus variables para que de esa manera. Para que sea un constructor de copia, usted todavía tiene que escribir manualmente el código que copia los campos de otheral objeto que está creando. Me gusta esto:

public Fraction(Fraction other) {
    num = other.num; 
    denom = other.denom; 
}

El constructor crea un nuevo Fractionpero es el código que escribe en su interior que lleva a cabo manualmente la "copia" que lo convierte en un "constructor de copia" y le permite hacer

Fraction a = Fraction(4, 20);
Fraction b = new Fraction(a); 
// b has the same values as a but is a different object

Por supuesto, si usted ya tiene otro constructor, un camino más corto para hacer un constructor de copia es

public Fraction(int n, int d) {
    num = n; 
    denom = d; 
}

public Fraction(Fraction other) {
    this(other.num, other.denom);
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=314136&siteId=1
Recomendado
Clasificación