corrección de errores de programación java
1
Corrección de errores del programa JAVA
1.
Nombre de clase abstracta {nombre de cadena privada
public abstract boolean isStupidName(String name) {} }
Respuesta: Incorrecta. Los métodos abstractos deben terminar con punto y coma y sin llaves.
2.
clase pública Algo { void doSomething () { cadena privada s = ""; int l = s.length() }
Respuesta: Incorrecto. No se pueden colocar modificadores de acceso (privado, público y protegido) antes de las variables locales. final se puede utilizar para modificar variables locales
3.abstract class Something {
private abstract String doSomething ();
Respuesta: Incorrecto. Los métodos abstractos no se pueden modificar con privado. Los métodos abstractos permiten que las subclases implementen detalles específicos. ¿Cómo podemos usar privado para bloquear métodos abstractos? (Del mismo modo, final no se puede agregar antes de los métodos abstractos).
4.
clase pública Algo {
public int addOne(final int x) { return ++x } }
Respuesta: Incorrecto. int x se modifica como final, lo que significa que x no se puede modificar en el método addOne.
5.
clase pública Algo {
public static void main(String[] args) { Otro o = new Otro()
;nuevo Algo().addOne(o); }
public void addOne(final Otro o) { o.i++; wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();}); p>2
} }
class Otro { public int i }
Muy similar a lo anterior, todos tratan sobre cuestiones finales, lo cual está mal. ¿En serio?
Respuesta: Correcta. En el método addOne, el parámetro o se modifica a final. Si modificamos la referencia de o en el método addOne (por ejemplo: o = new Other();), entonces esta pregunta también es incorrecta como en el ejemplo anterior. Pero lo que se modifica aquí es el miembro variable (variable miembro) de o, y la referencia de o no ha cambiado.
6.
clase Algo { int i;
public void hacerAlgo() { System.out.println("i = " + i); }
¿Qué pasa?
Respuesta: Correcta. La salida es "i = 0". int i pertenece a la variable instantánea (variable de instancia o variable miembro). La variable instantánea tiene un valor predeterminado. El valor predeterminado de int es 0.
7.
clase Algo { final int i;
public void hacerAlgo() { System.out.println("i = " + i); } }
Solo hay una diferencia con la pregunta anterior, es decir, hay una final adicional. ¿Está esto mal? Respuesta: Incorrecto. final int i es una variable instantánea final (variable de instancia o variable miembro). La variable instantánea final no tiene valor predeterminado y se le debe asignar un valor explícito antes de que finalice el constructor. Se puede modificar a "final int i = 0;".
8.
clase pública Algo {
public static void main(String[] args) { Algo s = new Algo()
;System.out.println("s.doSomething() devuelve " +
hacerAlgo()
}
public String hacerAlgo()); { return "Haz algo ..."; }
3
}
Se ve perfecto. Respuesta: Incorrecto. Parece que no hay problema en llamar a doSomething en main. Después de todo, ambos métodos están en la misma clase. Pero mire con atención, main es estático. Los métodos estáticos no pueden llamar directamente a métodos no estáticos. Se puede cambiar a "System.out.println("s.doSomething() devuelve " + s.doSomething());". De la misma manera, los métodos estáticos no pueden acceder a variables instantáneas no estáticas.
9.
Aquí, el nombre del archivo de la clase Algo es OtherThing.java clase Algo {
private static void main(String[] Something_to_do) { System .out.println("Haz algo ..."); } }
Esto parece obvio.
Respuesta: Correcta. Nadie ha dicho nunca que el nombre de una clase Java debe ser el mismo que el nombre de su archivo. Pero el nombre de la clase pública debe ser el mismo que el nombre del archivo.
10.
interfaz A{ int x = 0; }
clase B{ int x =1; }
clase C extiende B implementa A { public void pX( ){
System.out.println(x); }
public static void main(String[] args) { new C().pX(); p>
Respuesta: Incorrecta. Se producirá un error durante la compilación (descripción del error: diferentes JVM tienen información diferente, lo que significa una llamada x no especificada, ambas x coinciden (al igual que declarar directamente la fecha al importar paquetes java.util y java.sql al mismo tiempo) Mismo). Para las variables de la clase principal, puede utilizar super.interface Playable { void play() }
interface Bounceable {
4
void. play(); }
interfaz Enrollable extiende Reproducible, Rebotable { Ball ball = new Ball("PingPang");
class Ball implementa Rollable { private String name; >
public String getName() { return nombre }
public Ball(String nombre) { this.name = nombre }
public void play() { p>
ball = new Ball("Football" );
System.out.println(ball.getName());
Este error no es fácil de solucionar. find.
Respuesta: "Interfaz" es incorrecta. "Rollable extiende Playable, Bounceable" no es un problema. La interfaz puede heredar múltiples interfaces, por lo que esto es correcto. >"Ball ball = new Ball("PingPang");" en la interfaz Rollable
Cualquier variable de interfaz (variable de interfaz, también llamada variable miembro) declarada en la interfaz por defecto es pública estática final. :
Ball ball = new Ball("PingPang"); en realidad
Ball final estático público = new Ball("PingPang");.
En el método Play() de la clase Ball, "ball = new Ball("Football");" cambia la referencia de la pelota, y la pelota aquí proviene de la interfaz Rollable, y la pelota en la interfaz Rollable es pública Estática final, la referencia del objeto final no se puede cambiar. Entonces el compilador mostrará un error aquí ball = new Ball("Football");