Para los pasos por Valor, se crea una copia del parametro sobre el cual trabaja la función, por lo que cualquier cambio que hagamos al parámetro este cambio no se verá reflejado fuera de la función.
Para los pasos por Referencia, el parámetro dentro de la función copia la referencia de la variable (parametro real) que ha sido enviada por medio de este parametro (parametro formal) por lo que cualquier cambio del valor del parametro dentro de la función afectaría al valor de la variable original por lo que se ve reflejado desde fuera de la función.
Para el caso de Java, las variables de tipos de datos primitivos pasan por Valor, miestras que las varibles tipo objeto pasan por referencia.
Cuando se pasan Objetos, realmente pasa por valor su referencia, en el grafico a continuación se representa la referencia como una flecha, la variable A almacena una referencia al objeto, en este caso de clase Imaginario.
Si se crea una función en la cual tenemos un parametro llamado pA, y enviamos el objeto A, el parametro pA copia la referencia que se encuentra almacenada en A, es decir en este instante los dos elementos pA y A hacen referencia al mismo objeto, gracias a esto si desde pA se cambia el valor de algun atributo del objeto es decir ParteReal o ParteImaginaria el cambio se refleja hacia el exterior de la función, similar a un paso por referencia.
Pero, si se crea un nuevo objeto y se le asigna a pA, la variable A mantiene la referencia sin cambiar (paso por valor) en el exterior de la función, porque si bien es cierto pasa la referencia, pero esta referencia es pasada por valor, los cambios del objeto completo no se pueden llevar a cabo, ya que crearía una nueva referencia al objeto nuevo.
No hay comentarios:
Publicar un comentario