option
Cuestiones
ayuda
daypo
buscar.php

Examen 2 Programación B - DAM

COMENTARIOS ESTADÍSTICAS RÉCORDS
REALIZAR TEST
Título del Test:
Examen 2 Programación B - DAM

Descripción:
Test 2 de 4 para el módulo Programación B basado en el temario de Ilerna

Fecha de Creación: 2026/05/18

Categoría: Informática

Número Preguntas: 60

Valoración:(0)
COMPARTE EL TEST
Nuevo ComentarioNuevo Comentario
Comentarios
NO HAY REGISTROS
Temario:

¿Qué palabra clave se utiliza en Java para declarar que una clase hereda de otra?. implements. super. inherits. extends.

Si una clase 'Configuracion' tiene una constante 'public static final String VERSION = "1.0"', ¿cómo se accede a ella desde otra clase?. Configuracion.VERSION. super.VERSION. this.VERSION. new Configuracion().VERSION.

¿Cuál es la utilidad de emplear la palabra clave 'super' dentro de un método sobreescrito?. Indica que el método debe ser estático obligatoriamente. Se usa para declarar que el método no puede ser modificado. Permite ejecutar la lógica original de la superclase además de la lógica nueva de la subclase. Sirve para instanciar la superclase desde la subclase.

Compara el uso de 'static final' con el uso de una variable de instancia. ¿Cuál es la consecuencia de modificar una variable 'static' (no final) desde un objeto?. El compilador impide la modificación de cualquier variable estática. Solo cambia el valor para ese objeto específico. Lanza una excepción de tiempo de ejecución. El cambio afecta a todos los objetos de esa clase presentes y futuros.

En el contexto de la herencia, ¿qué significa la relación "es un"?. Que un método estático puede crear objetos de esa clase. Que una subclase es una especialización de su superclase. Que una clase contiene una instancia de otra clase como atributo. Que dos clases comparten el mismo nombre de paquete.

Deseas crear una función que convierta grados Celsius a Fahrenheit sin necesidad de crear un objeto de la clase 'Conversor'. ¿Cómo deberías declarar el método?. public static double celsiusAFahrenheit(double c). public double celsiusAFahrenheit(double c). public abstract double celsiusAFahrenheit(double c). public final double celsiusAFahrenheit(double c).

¿Qué sucede con los miembros de una superclase cuando se crea una subclase?. La subclase debe volver a definir todos los miembros para usarlos. La subclase adquiere solo los métodos, pero no los atributos. La superclase pierde el acceso a sus propios métodos. La subclase adquiere los atributos y métodos públicos y protegidos de la superclase.

Tienes una superclase 'Empleado' con el método 'trabajar()'. Creas una subclase 'Secretario'. ¿Qué debes hacer si quieres que 'Secretario' realice una acción específica al 'trabajar'?. Crear un nuevo método llamado trabajarSecretario(). Declarar el método trabajar() como estático en Empleado. Utilizar la anotación @Override y redefinir el método trabajar() en Secretario. Eliminar el método trabajar() de la clase Empleado.

Si tienes una clase 'Coche' con una variable 'static int totalCoches' y creas 3 objetos 'Coche', ¿cuál será el valor de 'totalCoches' si se incrementa en el constructor?. 1. Indefinido. 0. 3.

¿Qué combinación de modificadores se utiliza para definir una constante en Java?. public abstract. private static. final volatile. static final.

¿Qué impacto tiene el uso de miembros estáticos en la eficiencia de memoria del sistema?. Reduce la velocidad del programa al requerir acceso a la definición de la clase. Optimiza la memoria al evitar replicar datos comunes o métodos funcionales en cada objeto. Aumenta el consumo de memoria porque los miembros estáticos nunca se eliminan. No tiene impacto, ya que Java gestiona la memoria de la misma forma para todos los miembros.

¿Cuál es una restricción fundamental de la herencia en Java mencionada en el texto?. Java solo permite la herencia simple (una clase solo extiende de una única superclase). Solo las clases abstractas pueden ser superclases. Una clase no puede tener más de dos niveles de herencia. Las subclases no pueden tener métodos estáticos.

En un sistema de videojuegos, todas las naves deben compartir la misma gravedad. ¿Cómo debería declararse la variable 'gravedad'?. final double gravedad. volatile double gravedad. static double gravedad. double gravedad.

¿Cuál es la sintaxis preferida para acceder a un método estático?. objeto.nombreMetodo(). super.nombreMetodo(). NombreDeClase.nombreMetodo(). this.nombreMetodo().

¿Cuál es la principal diferencia entre una variable de instancia y una variable estática?. La variable estática es compartida por todas las instancias, mientras que la de instancia es propia de cada objeto. La variable de instancia se inicializa al cargar la clase y la estática al crear el objeto. La variable estática puede cambiar su valor y la de instancia no. Las variables estáticas solo pueden ser de tipos primitivos.

Si la clase 'Calculadora' tiene un método estático 'sumar(int a, int b)', ¿cuál es la forma más eficiente de usarlo en un programa?. Calculadora calc = new Calculadora(); calc.sumar(5, 10);. Calculadora.sumar(5, 10). new Calculadora().sumar(5, 10). sumar(5, 10).

¿Por qué un método estático no puede acceder directamente a una variable de instancia?. Porque el compilador de Java prohíbe el uso de variables en métodos estáticos. Porque las variables de instancia son siempre privadas por defecto. Porque los métodos estáticos se ejecutan antes de que se cargue la clase. Porque las variables de instancia requieren un objeto específico para existir y el método estático no está vinculado a ninguno.

En una jerarquía: Animal -> Mamifero -> Perro. Si el método 'hacerSonido()' está definido en Animal y sobreescrito en Perro, ¿qué ocurre si un objeto Perro llama a 'super.hacerSonido()' desde su propia implementación?. Se ejecuta el método 'hacerSonido()' definido en Mamifero (o Animal si Mamifero no lo sobreescribió). Se genera un error de compilación. Se borra la implementación de Perro. Se llama recursivamente al método de Perro.

¿Dónde residen los miembros estáticos en la memoria de Java?. En cada instancia individual creada con el operador new. En la memoria temporal del recolector de basura. En el stack de ejecución de cada método de instancia. En una zona de memoria única asociada a la definición de la clase.

En una jerarquía multinivel (A -> B -> C), si el método 'm()' se define en A y se sobreescribe en C, ¿qué sucede cuando se llama a 'm()' desde un objeto de tipo C?. Se produce un error de ambigüedad. Se ejecuta por defecto la versión de la superclase raíz (A). Se ejecuta la versión definida en C, ocultando la de A. Se ejecutan las versiones de A, B y C en cascada.

¿A partir de qué versión de Java se introdujeron los métodos con implementación por defecto en las interfaces?. Java 11. Java 8. Java 17. Java 7.

Si tienes una clase Hidroavion que debe volar y navegar, ¿cómo aplicarías el concepto de implementación múltiple?. class Hidroavion extends Volador implements Navegable { ... }. class Hidroavion extends Volador, Navegable { ... }. class Hidroavion implements Volador, Navegable { ... }. class Hidroavion implements Volador implements Navegable { ... }.

Por defecto, ¿cómo son todos los métodos declarados en una interfaz en Java?. Privados y estáticos. Públicos y finales. Públicos y abstractos. Protegidos y concretos.

Si declaras una clase Robot que implementa Accionable, pero no quieres definir todavía el método ejecutar() de la interfaz, ¿cómo debes declarar la clase?. public interface Robot implements Accionable { ... }. public abstract class Robot implements Accionable { ... }. public static class Robot implements Accionable { ... }. public class Robot implements Accionable { ... }.

¿Qué anotación se utiliza habitualmente para indicar que un método está sobrescribiendo una definición de una interfaz o clase superior?. @Override. @Abstract. @Interface. @Implement.

¿Cómo soluciona Java el problema de la herencia múltiple de clases?. Permitiendo que una clase implemente múltiples interfaces simultáneamente. Mediante el uso de clases internas anidadas. Permitiendo heredar de dos clases padre si ambas son abstractas. Eliminando la necesidad de jerarquías en el código.

¿Cuándo es más adecuado utilizar una clase abstracta en lugar de una interfaz?. Cuando las clases comparten tanto firmas de métodos como parte de su lógica interna. Cuando solo queremos definir un contrato de comportamiento puro. Cuando necesitamos que una clase herede de múltiples fuentes. Cuando no queremos permitir que otras clases hereden de ella.

¿Cuál es la principal diferencia conceptual entre una interfaz y una clase abstracta respecto a los atributos?. Ambas pueden tener variables de instancia de cualquier tipo. Ninguna de las dos puede poseer constantes o variables. Las interfaces solo permiten variables privadas y las clases abstractas públicas. Las interfaces no pueden tener atributos de instancia, mientras que las clases abstractas sí.

En un sistema de zoológico, ¿cómo implementarías el método hacerSonido() para una clase Perro que hereda de la clase abstracta Animal?. Llamando al método super.hacerSonido() únicamente. Sobrescribiendo el método para que imprima un ladrido. Creando una nueva interfaz llamada Ladrador. Dejándolo como abstracto para que el usuario decida.

En el contexto de interfaces, ¿qué significa la separación entre el 'qué' y el 'cómo'?. La interfaz contiene el código fuente y la clase el archivo compilado. El programador define qué métodos usar y el usuario cómo ejecutarlos. La interfaz define qué debe hacerse, y la clase implementadora decide cómo hacerlo. El compilador decide qué clase usar y la interfaz cómo conectarlas.

¿Cuál es el propósito fundamental de los métodos abstractos según el texto?. Permitir la creación de objetos genéricos sin comportamiento. Optimizar el uso de memoria del sistema. Establecer una base común para un grupo de clases relacionadas. Ocultar la lógica interna de los datos a otros desarrolladores.

¿Qué ocurre si intentas instanciar una interfaz directamente con el código new MiInterfaz();?. Se ejecuta el constructor por defecto de la interfaz. El compilador dará un error porque las interfaces no se pueden instanciar. Se crea un objeto de la clase Object. Se crea un objeto con métodos vacíos.

¿Qué relación existe entre el desacoplamiento de código y el uso de interfaces según el contenido estudiado?. Las interfaces promueven el desacoplamiento al separar la definición del comportamiento de su implementación real. Las interfaces aumentan el acoplamiento porque obligan a las clases a depender de ellas. El desacoplamiento es una desventaja de las interfaces que se soluciona con clases abstractas. El desacoplamiento solo se logra mediante el uso de atributos privados y no tiene relación con las interfaces.

¿Qué sucede si una clase concreta implementa una interfaz pero no define todos sus métodos?. El código no compilará a menos que la clase se declare como abstracta. Se produce un error de ejecución al intentar instanciar la clase. La clase heredará el comportamiento por defecto de la clase Object. El compilador genera automáticamente una implementación vacía.

Tienes una interfaz Imprimible con un método imprimir(). ¿Cuál de las siguientes declaraciones de método en la clase implementadora es correcta?. @Override private void imprimir() { // código }. void imprimir() { // código }. @Override public void imprimir() { // código }. public abstract void imprimir();.

Dada una clase Coche que debe implementar la interfaz Vehiculo con el método moverse(), ¿cuál es la sintaxis correcta?. class Coche extends Vehiculo { void moverse() { ... } }. class Coche implements Vehiculo { public void moverse() { ... } }. interface Coche implements Vehiculo { void moverse(); }. class Coche implements Vehiculo { abstract void moverse(); }.

¿Qué palabra clave se utiliza en Java para que una clase adopte el contrato de una interfaz?. abstract. implements. interface. extends.

Compara el uso de interfaces frente a clases abstractas. ¿Cuál sería la mejor opción para un sistema que requiere que objetos sin ninguna relación jerárquica (como un Libro y un Coche) puedan ser localizados por GPS?. Ninguna, se debe usar una clase concreta para ambos. Una interfaz 'Localizable', ya que permite unir clases de distintos ámbitos bajo un contrato común. Una clase abstracta 'ObjetoConPosicion', para forzar la herencia simple. Ambas son igual de válidas pues permiten definir el método localizar().

Si una API antigua utiliza una interfaz y queremos añadir un nuevo método sin obligar a todas las clases que ya la usan a actualizarse, ¿qué mecanismo de Java 8 deberíamos analizar?. El uso de métodos 'default' en la interfaz. Crear una nueva interfaz que herede de la anterior. El uso de métodos 'static' en la interfaz. Convertir la interfaz en una clase abstracta.

Un desarrollador declara public abstract int calcularArea(); dentro de una clase Figura. ¿Qué debe hacer obligatoriamente una clase Circulo que hereda de Figura?. Declarar el método como privado en la clase Circulo. Proporcionar el cuerpo del método calcularArea() con la lógica del círculo. Borrar el método para evitar errores de duplicidad. Nada, el método ya está definido en la clase Figura.

¿Cuál es la diferencia fundamental entre el comportamiento de una variable de referencia y el objeto real en el polimorfismo dinámico?. La referencia determina la implementación ejecutada y el objeto determina la visibilidad. La referencia se usa para el downcasting y el objeto real se usa exclusivamente para el upcasting. No existe diferencia; ambos deben ser del mismo tipo exacto para que el programa compile. La referencia limita qué métodos son visibles (compilación), mientras que el objeto determina qué implementación se usa (ejecución).

¿Qué término se utiliza comúnmente en inglés para referirse a la sobreescritura de métodos?. Method casting. Method overloading. Method overriding. Method instance.

¿Cuál es una función crítica de la anotación @Override respecto al compilador?. Prevenir que otras subclases vuelvan a sobreescribir el mismo método. Convertir automáticamente el método en una interfaz estática. Solicitar la verificación de que la firma del método coincida con uno en la superclase. Obligar al método a ser público independientemente de la superclase.

¿Cuál es el propósito principal de la sobreescritura de métodos en la programación orientada a objetos?. Permitir que una clase tenga varios métodos con el mismo nombre pero distintos parámetros. Evitar que las subclases accedan a los atributos privados de la superclase. Adaptar el comportamiento de los métodos heredados al contexto específico de la subclase. Aumentar la velocidad de compilación de las jerarquías de clases.

¿Cuál es la anotación que se utiliza en Java para indicar que un método intenta redefinir uno de la superclase?. @Inherit. @Polymorph. @Overwrite. @Override.

Analice la relación entre instanceof y downcasting. ¿Por qué se considera una buena práctica usarlos juntos?. Porque permite que el downcasting sea implícito y automático sin intervención del programador. Porque instanceof actúa como una salvaguarda que evita errores de tipo al confirmar la identidad del objeto antes de la conversión forzada. Porque instanceof convierte automáticamente el objeto, eliminando la necesidad de paréntesis. Porque el compilador obliga a usar instanceof para poder usar la anotación @Override.

Si tenemos Vehiculo v = new Coche(); donde Coche hereda de Vehiculo, ¿qué instrucción es necesaria para acceder a un método exclusivo de Coche?. Coche c = v;. Coche c = (Coche) v;. Vehiculo c = new Coche();. v.asCoche();.

¿Qué ocurre si un desarrollador intenta sobreescritura un método pero cambia accidentalmente el tipo de un parámetro?. Java ajustará automáticamente el tipo de parámetro para que coincida con la superclase. El compilador lo tratará como un método nuevo (sobrecarga) en lugar de una sobreescritura. El programa lanzará una ClassCastException en tiempo de ejecución. La subclase heredará el método original e ignorará el nuevo método definido.

Un programador escribe Animal animal = new Perro();. ¿Qué tipo de conversión está ocurriendo en esta línea?. Sobrecarga de constructores. Instanciación por interfaz. Downcasting explícito. Upcasting implícito.

Compare el upcasting y el downcasting. ¿Qué afirmación describe mejor su relación técnica en la jerarquía de herencia?. El upcasting abstrae la especialización hacia la generalidad, mientras que el downcasting recupera la especialización desde la generalidad. El upcasting requiere paréntesis y el downcasting es automático por seguridad. Ambos son procesos automáticos siempre que se use la anotación @Override. El upcasting ocurre en tiempo de ejecución y el downcasting ocurre estrictamente en tiempo de compilación.

¿Qué ventaja ofrece manejar diferentes objetos a través de una variable del tipo de la clase base?. Mejora el rendimiento de la memoria al eliminar la necesidad de crear objetos reales. Garantiza que el programador no necesite usar el operador instanceof nunca más. Permite tratar distintos tipos de objetos de manera uniforme mediante una interfaz común. Hace que todos los métodos de las subclases sean visibles sin necesidad de casting.

Al usar la anotación @Override, si el compilador detecta que el método no existe en la superclase, ¿qué acción toma?. Genera un error de compilación de inmediato. Crea automáticamente el método en la superclase. Lanza una ClassCastException durante la ejecución. Ignora la anotación y continúa con la compilación.

Usted define Animal a = new Gato();. Si la clase Animal tiene un método hacerSonido() y Gato lo sobreescribe, ¿qué ocurre al ejecutar a.hacerSonido()?. Se ejecuta la versión definida en la clase Animal. Se ejecuta la versión definida en la clase Gato. Se produce un error de compilación por ambigüedad. Se lanza una excepción ClassCastException.

Dado el código: if (miAnimal instanceof Perro) { ... }. ¿Cuál es el paso lógico a seguir dentro del bloque if si se desea llamar a un método específico de Perro?. Realizar un downcasting explícito de miAnimal a Perro. Eliminar la anotación @Override del método objetivo. Realizar un upcasting de miAnimal a la clase base. Declarar miAnimal como una nueva interfaz de tipo Perro.

Para asegurar que el método public void mover(int d) sobreescriba correctamente un método de la superclase, ¿qué debe verificar el desarrollador?. Que el método de la superclase sea marcado como private. Que el parámetro en la subclase sea diferente al de la superclase. Que la superclase tenga un método con el mismo nombre y un parámetro de tipo int. Que la subclase no tenga otros métodos con el nombre mover.

¿Cuál de las siguientes sintaxis representa un downcasting realizado correctamente en Java?. SubClase obj = (SubClase) referenciaClaseBase;. ClaseBase obj = SubClase(referenciaClaseBase);. referenciaClaseBase.cast(SubClase);. SubClase obj = new (SubClase) ClaseBase();.

¿Por qué el upcasting se considera una operación segura y automática en Java?. Porque un objeto de una subclase siempre cumple con la definición de su clase base (relación "es un"). Porque solo se puede realizar entre clases que no tienen métodos sobreescritos. Porque el compilador elimina automáticamente los métodos sobrantes de la subclase. Porque el operador instanceof lo valida internamente sin intervención del usuario.

¿Qué operador de Java se utiliza para verificar si un objeto es una instancia de una clase específica?. isA. instanceof. check. typeof.

¿Cómo se denomina la excepción que lanza Java cuando un downcasting no es válido en tiempo de ejecución?. ClassCastException. IllegalArgumentException. MethodNotFoundException. NullPointerException.

En el contexto del polimorfismo dinámico, ¿qué determina qué versión de un método se ejecuta?. El tipo real del objeto creado en memoria. La presencia o ausencia de la anotación @Override únicamente. El tipo de la variable de referencia declarada. El orden en el que se importaron las clases en el proyecto.

Denunciar Test