Métodos: Ejecución.
Cuando se ejecuta una llamada de un método por un objeto o una clase, bien sea dinámico o estático, Java asocia a esa llamada una zona de memoria donde se guardarán las variables locales del método, tanto primitivas como complejas. Esa zona se llama registro de activación.
Cuando se ejecuta un método A y a través de éste se alcanza una instrucción en la que se llama a otro método B:
Se evalúan en A las expresiones que aparecen como argumentos del método B. Se reserva espacio de memoria para el registro de activación de B. Los parámetros formales de B se inician, en su registro de activación, a los valores de los argumentos mediante el paso de parámetros por valor. (Y esos valores dónde se encuentran?).
Si el método es dinámico o de objeto, LA VARIABLE FINAL THIS DEL NUEVO REGISTRO SE INICIA AL OBJETO EN CURSO Y YA NO CAMBIA.
Se ejecutan las instrucciones de B. Acabada la ejecución de B su registro de activación se libera.
Ejemplo:
Punto p = new Punto(0.0, 0.0); //p es (0.0,0.0)
p.cambiar(3.0, 4.0);//p pasa a ser (3.0,4.0)
en la ejecución de estos dos métodos main y cambiar, sucede lo siguiente:
REGISTRO DE ACTIVACION REGISTRO DE ACTIVACION
Ejecución del método constructor:
Como con el resto de métodos, una vez evaluados los parámetros reales se crea un registro de activación y se pasa su valor a los parámetros formales.
Se obtiene un bloque de memoria libre en el montículo para albergar un objeto de la clase, que pasará a ser el objeto en curso con el que se inicia this.
Se inicializan las variables de instancia del objeto creado con el valor por defecto.
Si hay instrucciones en el cuerpo del constructor, se ejecutan (como por ejemplo, para cambiar los valores por defecto de los atributos de this).
Se devuelve el objeto (referencia a) this como resultado de la llamada al constructor.
Ejecución de métodos. Pila de llamadas
Comentarios
Publicar un comentario