void modificar1 ( Num n ) { n.setValue(10); }
void modificar2 ( Num n ) { n = new Num(10); }
En un lenguaje como Pascal, donde existe el paso de parámetros por referencia, tú puedes ejecutar cualquiera de estas dos funciones y el resultado es que n acaba apuntando a un objeto que representa el número 10. Tú puedes tener una función que tome como parámetro ( var n:Num ), y luego hacer n=algo, y hala, la n se te modificó fuera.
Tengo el PASCAL muy muy oxidado (fue mi primer lenguaje y aún no había POO), pero el tema es puramente semántico. El paso de parámetros con el 'var' delante en Pascal únicamente indica que lo que se pasa es una referencia al objeto, en lugar de una copia del mismo (que es exactamente lo que hace Java SIEMPRE). Si es cierto que en Pascal puedes pasar una referencia por referencia, pero eso es otro tema. Los objetos en Java siempre se pasan por referencia.
Claro que solo es un punto de vista, y se nota que soy programador C (con lo que no puedo más que estar de acuerdo con tu último párrafo).
No estoy de acuerdo (en algunas cosas).
(Puntos:2)( http://web.iesrodeira.com | Última bitácora: Sábado, 25 Abril de 2009, 19:50h )
void modificar1 ( Num n ) { n.setValue(10); }
void modificar2 ( Num n ) { n = new Num(10); }
En un lenguaje como Pascal, donde existe el paso de parámetros por referencia, tú puedes ejecutar cualquiera de estas dos funciones y el resultado es que n acaba apuntando a un objeto que representa el número 10. Tú puedes tener una función que tome como parámetro ( var n:Num ), y luego hacer n=algo, y hala, la n se te modificó fuera.
Tengo el PASCAL muy muy oxidado (fue mi primer lenguaje y aún no había POO), pero el tema es puramente semántico. El paso de parámetros con el 'var' delante en Pascal únicamente indica que lo que se pasa es una referencia al objeto, en lugar de una copia del mismo (que es exactamente lo que hace Java SIEMPRE). Si es cierto que en Pascal puedes pasar una referencia por referencia, pero eso es otro tema. Los objetos en Java siempre se pasan por referencia.
Claro que solo es un punto de vista, y se nota que soy programador C (con lo que no puedo más que estar de acuerdo con tu último párrafo).
Xavi.