1. El Plano y las Edificaciones: Clase vs Objetos
Una Clase es únicamente la plantilla o molde conceptual escrito en el código fuente. Los Objetos son las instancias reales que cobran vida en el Heap durante la ejecución. Un solo molde puede dar origen a miles de casas independientes.
Cada instancia encapsula su propio estado. Modificar c2 no altera ni en un solo centavo las celdas de memoria de c1 o c3.
2. El Ciclo en 4 Tiempos del Operador new
La sentencia Persona p = new Persona("Ana", 28); no es un paso mágico indivisible. Ocurre en 4 tiempos estrictos de arquitectura: Reserva, Puesta a cero, Constructor y Asignación de puntero.
El operador new solicita a la JVM espacio contiguo suficiente para almacenar los campos de Persona en el Heap.
3. El Puntero this y el Sombreamiento de Variables
Si el parámetro de un método o constructor se llama igual que un atributo ("nombre = nombre"), el parámetro oculta (sombrea) al atributo. La palabra clave this es la referencia explícita al objeto receptor actual.
Sin this, la variable local sombrea al atributo. El parámetro se copia sobre sí mismo y el atributo del objeto jamás se actualiza.
4. Referencias vs Copias: El peligro del Aliasing
En Java, las variables de tipo objeto NO guardan el objeto: guardan la dirección de memoria. Asignar Persona b = a; no clona a la persona: crea un segundo control remoto hacia la mismísima dirección en el Heap.
Al modificar el objeto a través del control remoto p2, la lectura desde p1 refleja el cambio inmediatamente porque apuntan al mismo bloque de memoria.