Различные переменные экземпляра показывают одно и то же значение при использовании метода get - PullRequest
1 голос
/ 27 августа 2011

У меня есть этот кусок кода:

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;
 }
}

Мне сказали, что эта программа вернет значения 2 и 2, но я не могу понять, почему.Согласно тому, что я знаю, это должно показать 1 и 2. Может кто-то объяснить или дать ссылку на объяснение?Спасибо.

Ответы [ 2 ]

4 голосов
/ 27 августа 2011

Вы объявили x статическим членом.Член static является общим для всех экземпляров одного и того же класса.

static int x;

Вот почему вывод 2 and 2 Если вы хотите, чтобы каждый экземпляр класса Base имел свое собственное значение членах, вы должны удалить ключевое слово static.

1 голос
/ 27 августа 2011

Статический означает, что он принадлежит классу, а не экземпляру, т.е. он является общим для всех экземпляров класса.

...