No soy nuevo en Java y C#. Pensé que entender el concepto de ámbito de variable hasta hace poco me hice esta pregunta en una entrevista:Una pregunta difícil de Java simple: alcance variable
public class Q{ //starting y scope
static int x = 11;
private int y = 33; // Just added a “private” modifier to make it clearer.
public static void main(String args[]){
Q q = new Q();
q.call(5);
}
public void call(int x){
Q q = new Q();
this.x = 22;
y = 44;
System.out.println("Output: " + Q.x);
System.out.println("Output: " + q.x);
System.out.println("Output: " + q.y);
}
} //ending y scope
Definir la salida de este programa.
Respondí a la pregunta durante la entrevista que la salida sería una excepción de tiempo de ejecución. A mi entender, y es declarado privado, y el método de instancia call() está tratando de acceder a la variable privada de la instancia y de otra instancia de la clase Q. ¿¡Cómo pudo suceder eso !? Sin embargo, responder incorrectamente esta pregunta no afectó demasiado mi entrevista porque este es el tipo de pregunta "compleja básica". Pero responder incorrectamente significa que la experiencia de Java de mis años necesita rehabilitación, ¡eso es terrible!
¿Alguien podría ayudarme en este asunto? ¡Sería muy apreciado!
¿Tiene salida 11,22,33? –
No estoy seguro de cómo esta es una pregunta "difícil". – R0MANARMY
Diría que 22, 22, 33, 'x' es estático, ¿por qué no podría cambiarse por' this.x = 22'? – Kevin