← Volver a actividades
Autoevaluación

Autoevaluación: Clases, Objetos y el Operador new

Fundamentos de POO: Clases, Objetos y Atributos · 15 min aprox.

Respondé todas las preguntas y presioná Calificar para ver tu puntaje.

1. ¿Qué representa una clase en Java?
Correcto Incorrecto Sin responder

Respuesta correcta: El plano o molde que define qué atributos y métodos tendrán sus objetos.

¿Por qué? La clase es la plantilla abstracta definida en el código fuente: declara qué atributos (estado) y métodos (comportamiento) tendrá cada objeto, pero no es en sí misma un dato en memoria.

2. Una clase ocupa memoria de datos en el Heap durante la ejecución, igual que un objeto.
Correcto Incorrecto Sin responder

Respuesta correcta: Falso

¿Por qué? La clase no ocupa memoria de datos en el Heap. Solo el objeto (la instancia creada con new) ocupa ese espacio; la clase es la definición que la JVM usa para saber cómo construirlo.

3. Al ejecutar new NombreClase(), ¿qué es lo primero que hace la JVM?
Correcto Incorrecto Sin responder

Respuesta correcta: Reserva un bloque de memoria en el Heap para los atributos del objeto.

¿Por qué? El ciclo de new empieza con la reserva de memoria en el Heap: la JVM calcula el tamaño necesario según los atributos de la clase y asigna ese bloque antes de inicializar valores o invocar el constructor.

4. Si un atributo numérico (por ejemplo int o double) no se inicializa explícitamente, al instanciar el objeto con new toma un valor por defecto (0 o 0.0), en lugar de quedar indefinido.
Correcto Incorrecto Sin responder

Respuesta correcta: Verdadero

¿Por qué? Java inicializa los atributos con valores por defecto durante la instanciación: int/long/byte pasan a 0, double/float a 0.0 y boolean a false. Nunca quedan "indefinidos" como en otros lenguajes.

5. Declarás String nombre; como atributo de una clase, sin asignarle ningún valor. Después de instanciar el objeto con new, ¿cuál es el valor de nombre?
Correcto Incorrecto Sin responder

Respuesta correcta: null

¿Por qué? Las referencias a objetos (como String) tienen null como valor por defecto, a diferencia de los tipos primitivos numéricos.

6. Dentro de un método de instancia, ¿qué representa la palabra reservada this?
Correcto Incorrecto Sin responder

Respuesta correcta: Una referencia implícita al objeto actual que está ejecutando el método.

¿Por qué? this es una referencia implícita al objeto sobre el cual se invocó el método; permite acceder a sus atributos y pasar la instancia actual como argumento a otros métodos.

7. Si el parámetro de un método se llama igual que un atributo de la clase (por ejemplo, ambos se llaman precio), es necesario escribir this.precio dentro del método para referirse al atributo en lugar de al parámetro local.
Correcto Incorrecto Sin responder

Respuesta correcta: Verdadero

¿Por qué? Es el fenómeno de sombreamiento de variables (variable shadowing): el parámetro local "tapa" al atributo dentro del método, así que this.precio es la forma de desambiguar y referirse al atributo del objeto.

8. ¿Qué valor tiene p1.nombre después de ejecutar este código?
Persona p1 = new Persona();
p1.nombre = "Ana";
Persona p2 = p1;
p2.nombre = "Ana María";
Correcto Incorrecto Sin responder

Respuesta correcta: "Ana María": p1 y p2 son dos referencias al mismo objeto en el Heap.

¿Por qué? Persona p2 = p1; copia la referencia, no el objeto. p1 y p2 apuntan al mismo objeto en el Heap, así que modificar p2.nombre también se ve reflejado al leer p1.nombre.

9. La variable de referencia de un objeto (por ejemplo, Persona p1) se almacena en el Stack, mientras que los datos del objeto en sí residen en el Heap.
Correcto Incorrecto Sin responder

Respuesta correcta: Verdadero

¿Por qué? Así funciona la memoria en Java: el Stack guarda la referencia (la "dirección") dentro del stack frame del método, mientras que el objeto con sus atributos vive en el Heap.

10. ¿Qué imprime este código?
Persona p1 = new Persona();
p1.nombre = "Laura";
Persona p2 = new Persona();
p2.nombre = "Carlos";
p1.nombre = "Marta";
System.out.println(p2.nombre);
Correcto Incorrecto Sin responder

Respuesta correcta: Carlos

¿Por qué? A diferencia del caso de aliasing, acá p1 y p2 se crearon con dos llamadas a new independientes: son dos objetos distintos en el Heap. Cambiar p1.nombre no afecta a p2, que conserva "Carlos".