Ejercicios Prácticos. Test 6. Conceptos avanzados

     Cuestiones con respuesta única

  1. Sea la siguente clase de Java:
  2. public class Lampara {
         int contador1;	// Contador 1
         static int contador2; // Contador 2 
    
         public Lampara() {
              contador1 = 0;
              contador2 ++;
         }
    
         public void incrementa1() {
              contador1++;
         }
    
         public void incrementa2() {
              contador2++;
         }
    
         public static void incrementa() {
              contador1++;
              contador2++;
         }
    }

    ¿qué ocurriría al compilarla?

    a. Compilaría sin problemas.
    b. Saldría un error de compilación en el método incrementa1().
    c. Saldría un error de compilación en el método incrementa2().
    d. Saldría un error de compilación en el método incrementa().

  3. ¿Qué es lo que no se permite hacer en Java?

    a. Declarar atributos estáticos (static) de la clase.
    b. Declarar inicializadores estáticos (static) de las clase.
    c. Declarar constructores estáticos (static)en las clase.
    d. Declarar métodos estáticos (static) de la clase.


  4. Dado el siguente código Java :

      class HolaMundo {
           String sHola="¡Hola mundo!";
      
           public static void main( String args[] ) {
              System.out.println( this.sHola );
           }
      }

    ¿qué ocurriría al intentar compilarlo?


    a. El código no compilaría porque el atributo sHola no se puede inicializar al mismo tiempo que su declaración.
    b. El código no compilaría porque no hay ningún contructor declarado de la clase.
    c. El código no compilaría porque el método main() está mal declarado.
    d. El código no compilaría porque no se puede acceder desde el método estático main() al atributo sHola.


  5. ¿Es correcto el siguente código Java?

      class HelloWorld {
        static {
              System.loadLibrary("hello");
        }
      
        public void displayHelloWorld() {
              System.out.println("hello");
        }
      
        public static void main(String[] args) {
              new HelloWorld().displayHelloWorld();
        }
      }

    a. Sí, es correcto.
    b. No, hay una función estática mal declarada.
    c. No, no se puede crear un objeto HelloWorld sin ser asignado previamente a una variable.
    d. No, no se puede invocar al método displayHelloWorld() tal y como se ha hecho.


  6. ¿Dónde se situarían los ficheros .class del paquete edu.uc3m.it.tsirda ?

    a. En un subdirectorio tsirda/it/uc3m/edu situado a partir del directorio apuntado por la variable de sistema CLASSPATH.
    b. El el directorio /lib de librerías del JDK del sistema.
    c. En un subdirectorio edu/uc3m/it/tsirda situado a partir del directorio raíz del sistema.
    d. En un subdirectorio edu/uc3m/it/tsirda situado en algún lugar apuntado por por la variable de sistema CLASSPATH.


  7. Respecto a los paquetes de Java, señalar cuál es la afirmación falsa:

    a. Todas las clases en Java pertenecen a un paquete.
    b. Hay que importar siempre todas las clases de un paquete para trabajar con alguna de ellas.
    c. Si no escribimos la palabra reservada package al crear un paquete, se asigna la clase a un paquete anónimo por defecto.
    d. Si existieran varias clases con el mismo nombre en diferentes paquetes, se requiere usar el nombre cualificado de dichas clases.

  8. Se pretende crear una librería gráfica definiendo un paquete llamado graficos. Para ello, se crea el siguiente fichero Graficos.java que implementa dicho paquete:

      package graficos;
      
      public class Punto {
              // Implementación de la clase Punto ...
      }
      
      public class Linea {
              // Implementación de la clase Linea ...
      }

    ¿cómo se usaría una clase del paquete graficos ?

    a. Se tendría que usar la sentencia import graficos.*;
    b. No se puede usar niguna clase, la implementación de la librería no es correcta.
    c. Habría que hacer el import de la clase correspondiente de la librería.
    d. Colocando simplemente las clases de la librería en subdirectorio /graficos apuntado por el CLASSPATH.

  9. ¿Qué tipo de acceso es el que se conoce en Java cuando no se usa ningún modificador de acceso?:

    a. Acceso público.
    b. Acceso de paquete.
    c. Acceso protegido.
    d. Acceso privado.


  10. Sea el siguiente código Java que implementa una clase del paquete acceso:
      package acceso;
      
      public class ClaseDelPaqueteAcceso {
      
          private   int privado = 1; 
          int paquete = 2;  
          protected int protegido = 3;
          public    int publico = 4;
      
          private void metodoPrivado() {
              System.out.println("Soy un método privado de la clase ClaseDelPaqueteAcceso.");
          }
      
          void metodoDePaquete() { 
              System.out.println("Soy un método de paquete de la clase ClaseDelPaqueteAcceso.");
          }
      
          protected void metodoProtegido() {
              System.out.println("Soy un método protegido de la clase ClaseDelPaqueteAcceso.");
          }
      
          public void metodoPublico() {
              System.out.println("Soy un método público de la clase ClaseDelPaqueteAcceso.");
          }
      
          public static void main(String[] args) {
              ClaseDelPaqueteAcceso a = new ClaseDelPaqueteAcceso();
      
              System.out.println("Soy un atributo privado de la clase ClaseDelPaqueteAcceso: " + a.privado ); 
              System.out.println("Soy un atributo de paquete de la clase ClaseDelPaqueteAcceso: " + a.paquete );
              System.out.println("Soy un atributo protegido de la clase ClaseDelPaqueteAcceso: "+ a.protegido); 
              System.out.println("Soy un atributo público de la clase ClaseDelPaqueteAcceso: "+ a.publico ); 
              
              System.out.println("");  
      
              a.metodoPrivado();   
              a.metodoDePaquete();   
              a.metodoProtegido(); 
              a.metodoPublico(); 
      
          }
      }

    ¿Qué imprime el resultado de la ejecución de este código por pantalla?


  11. Sea el siguiente código de otra clase del mismo paquete acceso de la cuestión anterior:
      package acceso;
      
      public class OtraClaseDelPaqueteAcceso {
      
          public static void main(String[] args) {
              ClaseDelPaqueteAcceso a = new ClaseDelPaqueteAcceso();
      
              System.out.println("Soy el atributo privado de la ClaseDePaqueteAcceso: " + a.privado);
              System.out.println("Soy el atributo de paquete de la ClaseDePaqueteAcceso: " + a.paquete);   
              System.out.println("Soy el atributo protegido de la ClaseDePaqueteAcceso: " + a.protegido);  
              System.out.println("Soy el atributo público de la ClaseDePaqueteAcceso: " + a.publico);  
      
              a.metodoPrivado();
              a.metodoDePaquete();
              a.metodoProtegido();
              a.metodoPublico();
      }
      }

    Para poder ejecutar este código, hay que comentar algunas líneas. Deduce qué líneas son y el resultado de la ejecución del código por pantalla.


    Pulsa aquí para visualizar la solución a los ejercicios

Inicio de la páginainicio de la página