2011-08-27 76 views
1

时表现出相同的价值我有这样一段代码:不同的实例变量使用GET方法

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.有人可以解释或给出一个解释的链接?谢谢。

+0

线索在'static'中。这应该可以帮助你:http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html –

+4

我应该补充一点,大多数开发人员并不认为使用这样的静态编程很好。 –

回答

4

您已声明x为静态成员。一个static成员由同一个类的所有实例共享。

static int x; 

这就是为什么输出2 and 2 如果你想要的是Base类的每个实例都有自己的会员X的值,则必须删除static关键字。

1

静态意味着它属于类,而不是实例,即它由类的所有实例共享。