Certificación Java Parte 5
![]() |
![]() |
![]() |
Título del Test:![]() Certificación Java Parte 5 Descripción: Clases abstractas, Interfaces, Clases Anidadas y Sealed, Enum, Modularidad |




Comentarios |
---|
NO HAY REGISTROS |
Indica cuales de los siguientes miembros puede tener una Inferfaz. Métodos abstractos. Constructores. Constantes. Métodos con implementación. Métodos privados. Variables de instancia. Métodos estáticos. Dado el siguiente fragmento de código, ¿Qué se imprimirá por pantalla? class ClasePrueba implements InterfazPrueba{ @Override public void metodo() { System.out.println("Método implementado"); } } interface InterfazPrueba{ default void metodoDefault(){ System.out.println("Método default"); } void metodo(); } public class Principal{ public static void main(String[] args) { InterfazPrueba it = new ClasePrueba(); it.metodo(); it.metodoDefault(); } }. Método implementado Método default. Error de compilación. Método implementado. Dado el siguiente fragmento de código, ¿Qué se imprimirá por pantalla? class ClasePrueba implements InterfazPrueba,InterfazPruebaDos{ @Override public void metodo() { System.out.println("Método implementado"); } } interface InterfazPrueba{ default void metodoDefault(){ System.out.println("Método default"); } void metodo(); } interface InterfazPruebaDos{ default void metodoDefault(){ System.out.println("Método default Interfaz dos"); } } public class Principal{ public static void main(String[] args) { InterfazPrueba it = new ClasePrueba(); it.metodo(); it.metodoDefault(); } }. Método implementado Método default. Método implementado Método default Interfaz dos. Error de compilación. Une cada tipo de clase con la característica que le corresponde. Clase Abstracta. Interfaz. Dado el siguiente código, marca la opción de da un error de compilación abstract class Jugador{ } interface Delantero{ } class DelanteroCentro extends Jugador implements Delantero{} class Extremo extends DelanteroCentro{} public class ClasePrincipal { public static void main(String[] args) { Jugador jg= new DelanteroCentro(); //Linea1 Delantero dlc= new DelanteroCentro(); //Linea2 Delantero dlex= new Extremo(); //Linea3 Extremo ext= new DelanteroCentro(); //Linea4 } }. //Linea1. //Linea2. //Linea3. //Linea4. Compila correctamente. Dado el siguiente fragmento de código señala las dos correcciones que se deben aplicar para que compile correctamente abstract class Pelota{ protected void botar(){} //linea 1 abstract Object chutar(); //linea 2 } class PelotaFutbol extends Pelota{ void botar(){} //linea 3 protected void chutar(){} //linea 4 }. Hacer el método de la línea 3 público. Hacer el método de la línea 4 público. Cambiar el tipo del método de la línea 4 a String. Hacer el método de la línea 2 público. Hacer el método de la línea 1 público. Señala las características que corresponden a cada tipo de Clase Anidada. Clase interna. Clase Estática. Clase local a método. Clase Anónima. Dado el siguiente fragmento de código señala en que línea se produce el error de compilación: enum Equipo{ REALMADRID(1,"Real madrid"), BARCELONA(2,"Barcelona"), ATLETICO(3,"Atlético"), VILLAREAL(4,"Villareal"); int pos ; // línea 1 String name; // línea 2 public Equipo(int pos,String name){ // línea 3 this.pos = pos; // línea 4 this.name = name; // línea 5 } }. línea 1. línea 2. línea 3. línea 4. línea 5. public class Prueba { enum Equipo{ REALMADRID(1,"Real madrid"), BARCELONA(2,"Barcelona"), ATLETICO(3,"Atlético"), VILLAREAL(4,"Villareal"); int pos ; String name; Equipo(int pos,String name){ this.pos = pos; this.name = name; } public static void main(String[] args) { Equipo[] eq= {Equipo.REALMADRID,Equipo.BARCELONA,Equipo.ATLETICO}; eq[0].pos= 4; for(Equipo e:eq) { System.out.print(e.name()+" "); } } }. REALMADRID BARCELONA ATLETICO. REALMADRID VILLAREAL ATLETICO. Error de compilación. A partir del siguiente fragmento de código, ¿Cuál sería la forma correcta de instanciar la clase interna en la línea 1? class Exterior{ class Interna{ //métodos y atributos } } public class Principal{ public static void main(String[] args) { Exterior claseExt= new Exterior (); // linea 1 }. Exterior.Interna claseInt=claseExt.new Interna();. Interna claseInt=claseExt.new Interna();. Interna claseInt= new Interna();. Exterior.Interna claseInt= new Exterior.Interna();. Une los métodos de Enumeraciones con el valor que devuelve. values(). name(). ordinal(). toString(). Elige las opciones correctas sobre las Sealed Class. Pueden ser heredadas por cualquier clase. Son menos restrictivas que por defecto. Las clases implicadas deben estar en el mismo módulo o paquete. La clase permitida debe extender directamente de la sealed class. Las subclases deben definirse con los modificadores: non-sealed sealed final public. Las interfaces también pueden ser sealed, la interfaz permitida sólo podrá ser non-sealed o sealed, nunca final. Si la clase permitida está en el mismo fichero que la sealed se puede omitir la claúsula permits. Escoge las opciones correctas sobre modularidad. Mejora el control de acceso. Mayor claridad en sobre las dependencias. Paquetes de distribución más pequeños. Existencias de paquetes únicos. Dos módulos no pueden exponer el mismo paquete. Dado un módulo prueba que depende del módulo utilidades y que hace su paquete com.prueba.testing disponible para otros módulos ¿Cómo debería declararse en el archivo module-info.java de prueba?. module prueba{ requires utilidades; uses com.prueba; }. module prueba{ requires utilidades; exports com.prueba to utilidades; }. module prueba{ requires utilidades; exports com.prueba; }. module prueba{ requires com.prueba; exports utilidades; }. Tenemos dos módulos en dos carpetas distintas en la raíz del proyecto, las carpetas son modulo1 y modulo2 y el nombre de los módulos com.mimodulo1 y com.mimodulo2 respectivamente. com.mimodulo1 contiene una clase que va a hacer uso de un paquete que expone el módulo com.mimodulo2 ¿Con que instrucción compilaremos los módulos? Escoge dos. javac -d modulo2 modulo2/*.java javac –module-path modulo2 -d modulo1 modulo1/*.java. javac –module-path modulo2 -d modulo2 modulo2/*.java javac –module-path modulo2 -d modulo1 modulo1/*.java. javac -d modulo2 modulo2/*.java javac –p modulo2 -d modulo1 modulo1/*.java. javac –p modulo2 -d modulo2 modulo2/*.java javac –p modulo2 -d modulo1 modulo1/*.java. Tenemos dos módulos en dos carpetas distintas en la raíz del proyecto, las carpetas son modulo1 y modulo2 y el nombre de los módulos com.mimodulo1 y com.mimodulo2 respectivamente. com.mimodulo1 contiene una clase que va a hacer uso de un paquete que expone el módulo com.mimodulo2 Teniendo en cuenta que el método main se encuentra en la clase Test dentro del módulo com.mimodulo1 en el paquete com.pruebas ¿Cuáles serían los dos comandos correctos para ejecutar el módulo?. java –module-path modulo1;modulo2 –module com.module1/com.pruebas.Test. java -p. –m com.module1/com.pruebas.Test. java –module-path modulo1 –module com.module1/com.pruebas.Test. java –p modulo1 –m com.module1/com.pruebas.Test. Tenemos un servicio com.myService definido en el módulo ServiceModule. Este servicio lo implementa el módulo ProviderModule. Señala la opción correcta a la hora de definir el archivo module-info.java de una aplicación cliente. module ClienteModule { uses com.myService; }. module ClienteModule { requires ProviderModule; uses com.myService; }. module ClienteModule { requires ServiceModule; uses com.myService; }. module ClienteModule { requires ProviderModule; }. |