Diferentes variables de instancia muestran el mismo valor cuando se usa el método get

Tengo este fragmento de código:

class Test {
 public static void main (String[] args){
  Base b1, b2;
  b1= new Base(1);
  b2= new Base(2);

  System.out.println(b1.getX());
  System.out.println(b2.getX());
 }
}


public class Base {
 static int x;
 public Base(){
  x=7;
 }

 public Base( int bM) {
  x=bM;
 }


 public int getX() {
  return x;
 }
}

Me dijeron que este programa devolverá los valores 2 y 2, pero no puedo entender por qué. Según lo que sé, debería mostrar 1 y 2. ¿Alguien puede explicar o dar un enlace a una explicación? Gracias.

preguntado el 27 de agosto de 11 a las 18:08

La pista está en la palabra static. Esto debería ayudarte: download.oracle.com/javase/tutorial/java/javaOO/classvars.html -

Probablemente debería agregar que el uso de estática como esa no se considera una buena práctica de programación por la mayoría de los desarrolladores. -

2 Respuestas

Ha declarado x como miembro estático. A static miembro es compartido por todas las instancias de la misma clase.

static int x;

Por eso la salida es 2 and 2 Si desea que cada instancia de la clase Base tenga su propio valor del miembro x, debe eliminar el static palabra clave.

Respondido 27 ago 11, 22:08

Estático significa que pertenece a la clase, no a la instancia, es decir, lo comparten todas las instancias de la clase.

Respondido 27 ago 11, 23:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.