You are on page 1of 6

1.

Sea la siguente clase de Java:
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().

2. ¿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.

3. Dado el siguente código Java :
4. class HolaMundo {
5.
String sHola="¡Hola mundo!";
6.
7.
public static void main( String args[] ) {
8.
System.out.println( this.sHola );
9.
}
}

¿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.

4. ¿Es correcto el siguente código Java?
5. class HelloWorld {
6.
static {
7.
System.loadLibrary("hello");
8.
}
9.
10.
public void displayHelloWorld() {
11.
System.out.println("hello");
12.
}
13.
14.
public static void main(String[] args) {
15.
new HelloWorld().displayHelloWorld();
16.
}
}

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.

5. ¿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.

6. 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.

7.

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:
8. package graficos;
9.
10.
public class Punto {
11.
// Implementación de la clase Punto ...
12.
}
13.
14.
public class Linea {
15.
// 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.

8. ¿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.

9.

Sea el siguiente código Java que implementa una clase del paquete acceso:
1. package acceso;
2.
3. public class ClaseDelPaqueteAcceso {
4.
5.
private
int privado = 1;
6.
int paquete = 2;
7.
protected int protegido = 3;
8.
public
int publico = 4;
9.
10.
private void metodoPrivado() {
11.
System.out.println("Soy un método privado de la clase
ClaseDelPaqueteAcceso.");
12.
}
13.
14.
void metodoDePaquete() {
15.
System.out.println("Soy un método de paquete de la clase
ClaseDelPaqueteAcceso.");
16.
}
17.
18.
protected void metodoProtegido() {
19.
System.out.println("Soy un método protegido de la clase
ClaseDelPaqueteAcceso.");
20.
}
21.
22.
public void metodoPublico() {
23.
System.out.println("Soy un método público de la clase
ClaseDelPaqueteAcceso.");
24.
}
25.
26.
public static void main(String[] args) {
27.
ClaseDelPaqueteAcceso a = new ClaseDelPaqueteAcceso();
28.
29.
System.out.println("Soy un atributo privado de la clase
ClaseDelPaqueteAcceso: " + a.privado );
30.
System.out.println("Soy un atributo de paquete de la clase
ClaseDelPaqueteAcceso: " + a.paquete );
31.
System.out.println("Soy un atributo protegido de la clase
ClaseDelPaqueteAcceso: "+ a.protegido);
32.
System.out.println("Soy un atributo público de la clase
ClaseDelPaqueteAcceso: "+ a.publico );
33.
34.
System.out.println("");
35.
36.
a.metodoPrivado();
37.
a.metodoDePaquete();
38.
a.metodoProtegido();
39.
a.metodoPublico();
40.
41.
}
}

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

un
un
un
un

atributo
atributo
atributo
atributo

Soy
Soy
Soy
Soy

un
un
un
un

método
método
método
método

privado de la clase ClaseDelPaqueteAcceso: 1
de paquete de la clase ClaseDelPaqueteAcceso: 2
protegido de la clase ClaseDelPaqueteAcceso: 3
público de la clase ClaseDelPaqueteAcceso: 4

privado de la clase ClaseDelPaqueteAcceso.
de paquete de la clase ClaseDelPaqueteAcceso.
protegido de la clase ClaseDelPaqueteAcceso.
público de la clase ClaseDelPaqueteAcceso.

10.

Sea el siguiente código de otra clase del mismo paquete acceso de la cuestión
anterior:
1. package acceso;
2.
3. public class OtraClaseDelPaqueteAcceso {
4.
5.
public static void main(String[] args) {
6.
ClaseDelPaqueteAcceso a = new ClaseDelPaqueteAcceso();
7.
8.
System.out.println("Soy el atributo privado de la
ClaseDePaqueteAcceso: " + a.privado);
9.
System.out.println("Soy el atributo de paquete de la
ClaseDePaqueteAcceso: " + a.paquete);
10.
System.out.println("Soy el atributo protegido de la
ClaseDePaqueteAcceso: " + a.protegido);
11.
System.out.println("Soy el atributo público de la
ClaseDePaqueteAcceso: " + a.publico);
12.
13.
a.metodoPrivado();
14.
a.metodoDePaquete();
15.
a.metodoProtegido();
16.
a.metodoPublico();
17.
}
}

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.
Al intentar compilar el código, se obtendrá una salida por pantalla parecida a esta:
OtraClaseDePaqueteAcceso.java: metodoPrivado() has private access in
acceso.ClaseDePaqueteAcceso
a.metodoPrivado();
^
OtraClaseDePaqueteAcceso.java: privado has private access in
acceso.ClaseDePaqueteAcceso
System.out.println("Soy el atributo privado de la
ClaseDePaqueteAcceso: " + a.privado);
^
2 errorsPara ejecutar el código anterior hay que comentar las siguientes líneas de código:
public class OtraClaseDelPaqueteAcceso {
public static void main(String[] args) {
ClaseDelPaqueteAcceso a = new ClaseDelPaqueteAcceso();
// RECUERDA QUE LOS MODIFICADORES DE ACCESO SON A NIVEL DE CLASE, NO DE OBJETO
//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);
// RECUERDA QUE LOS MODIFICADORES DE ACCESO SON A NIVEL DE CLASE, NO DE OBJETO
//a.metodoPrivado();
a.metodoDePaquete();
a.metodoProtegido();
a.metodoPublico();
}
}

Soy el atributo de paquete de la ClaseDePaqueteAcceso: 2
Soy el atributo protegido de la ClaseDePaqueteAcceso: 3
Soy el atributo público de la ClaseDePaqueteAcceso: 4
Soy un método de paquete de la clase ClaseDelPaqueteAcceso.
Soy un método protegido de la clase ClaseDelPaqueteAcceso.
Soy un método público de la clase ClaseDelPaqueteAcceso.