Ejercicios de Java – Boletín 2
Curso 2015/2016
Clases y Objetos
1. Identifica y explica los 4 errores de compilación que existen en el siguiente
código.
package paquete1;
public class A{
private B ob = null;
public A(){
ob = new B();
}
public A (A otro){
ob = otro.ob;
}
public int met(){
return ob.x;
}
public static void main (String[] args){
A oa = new A(this);
oa.met();
}
}
package paquete1.paquete2;
public class B{
int x = 0;
public B(int x){ this.x = x;}
}
2. Dada una clase A que tiene un solo constructor sin argumentos, queremos
añadir la siguiente funcionalidad: conocer el número de objetos de la clase
A que se han creado. Indica el código que habría que introducir en la clase
para ofrecer esa funcionalidad. Muestra un ejemplo de uso de la nueva
funcionalidad.
1
3. Justifica cuál sería el resultado de la ejecución del siguiente código:
package paquete1;
public class Numero {
private int valor;
public Numero(int valor){
this.valor = valor;
}
public int getValor() {
return valor;
}
public void setValor(int valor) {
this.valor = valor;
}
}
package paquete1;
public class Envoltorio {
private Numero n;
public Envoltorio(Numero n){
n.setValor(0);
}
public Numero getNumero(){
return n;
}
public static void main(String[] args) {
Numero n = new Numero(3);
Envoltorio e = new Envoltorio (n);
System.out.println(n.getValor());
System.out.println(e.getNumero().getValor());
}
}
2
4. ¿Cuál es el resultado de la ejecución del siguiente código sin errores de
compilación? Justifica la respuesta
public class C {
private int at;
public C(){
at=0;
}
public void met(C p1, int p2){
p1 = new C();
p1.at=5;
at = ++p2;
}
public static void main(String[] args) {
C oc1 = new C();
C oc2 = new C();
int v = 5;
oc1.met(oc2,v);
System.out.println(oc1.at);
System.out.println(oc2.at);
System.out.println(v);
}
}
5. (junio 2014) Explica mediante un ejemplo la declaración y uso de
argumentos de tamaño variable.
6. (febrero 2014) En Java, sobre la aplicación del modificador final en
atributos, responde a las siguientes cuestiones justificando las respuestas:
a) Si el atributo es de tipo boolean, ¿con qué valor es inicializado por
defecto?
b) Dada la clase A que define un atributo at1 final, y dos objetos oa1 y
oa2 de esta clase, ¿qué problemas tiene la siguiente asignación oa1 =
oa2?
7. (septiembre 2012) Dado el siguiente código:
//Fichero: PasoParametros.java
3
public class PasoParametros {
a) Explica y soluciona el error de
compilación del código.
private void setHoraCanarias(Date ahora) {
ahora = new Date();
ahora.setHours(ahora.getHours()-1);
b) Explica cuál es la salida de la
} ejecución del método main.
public static void main(String[] args) {
// Fecha y hora actual
Date ahora = new Date();
setHoraCanarias(ahora);
System.out.println("hora en canarias" +
ahora);
8. (septiembre 2012) Respecto al modificador final de Java, contesta de
forma razonada a las siguientes preguntas:
a) ¿Es posible modificar el estado de un objeto referenciado desde un
atributo final una vez establecido su valor en el constructor? Recuerda
que el estado de un objeto viene dado por el valor de sus atributos.
9. (junio 2012) Sobre constructores en Java, responde justificadamente:
a) En la implementación de un constructor, indica cómo podemos reutilizar otro
constructor.
b) Si una clase ofrece solo un constructor, ¿debe ser el constructor sin
parámetros?
10. (septiembre 2011) Indica si las siguientes afirmaciones son verdaderas o
falsas justificando la respuesta:
a) Un método de clase no puede manipular objetos, sólo atributos de clase,
por tanto no puede recibir objetos de la clase como parámetro.