class StaticAndInstance{
static int classVar;
int instanceVar;
static void setClassVar( int i ){
classVar = i;
// instanceVar = i; 不能在类方法中存取实例变量
}
static int getClassVar( ){
return classVar;
}
void setInstanceVar( int i ){
classVar = i; // 可以在实例方法中存取类域
instanceVar = i;
}
int getInstanceVar( ){
return instanceVar;
}
}public class StaticAndInstanceTest{
public static void main( String args[ ] ){
StaticAndInstance m1 = new StaticAndInstance( );
StaticAndInstance m2 = new StaticAndInstance( );
m1.setClassVar( 1 );
m2.setClassVar( 2 );
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
m1.setInstanceVar( 11 );
m2.setInstanceVar( 22 );
System.out.println("m1.InstanceVar = "+m1.getInstanceVar()+" m2.InstanceVar = "+m2.getInstanceVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( )); }
}
上面这个程序的结果中
m1.classVar 为什么=2?为什么下面的输出又变成了22和前面的m1 m2输出不一样了呢?
static int classVar;
int instanceVar;
static void setClassVar( int i ){
classVar = i;
// instanceVar = i; 不能在类方法中存取实例变量
}
static int getClassVar( ){
return classVar;
}
void setInstanceVar( int i ){
classVar = i; // 可以在实例方法中存取类域
instanceVar = i;
}
int getInstanceVar( ){
return instanceVar;
}
}public class StaticAndInstanceTest{
public static void main( String args[ ] ){
StaticAndInstance m1 = new StaticAndInstance( );
StaticAndInstance m2 = new StaticAndInstance( );
m1.setClassVar( 1 );
m2.setClassVar( 2 );
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
m1.setInstanceVar( 11 );
m2.setInstanceVar( 22 );
System.out.println("m1.InstanceVar = "+m1.getInstanceVar()+" m2.InstanceVar = "+m2.getInstanceVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( ));
System.out.println("m1.classVar = "+m1.getClassVar( )+" m2.classVar = "+m2.getClassVar( )); }
}
上面这个程序的结果中
m1.classVar 为什么=2?为什么下面的输出又变成了22和前面的m1 m2输出不一样了呢?
static void setClassVar( int i ){
classVar = i;
// instanceVar = i; 不能在类方法中存取实例变量
}
m2.setClassVar( 2 );下面的代码将classvar设置成了22void setInstanceVar( int i ){
classVar = i; // 可以在实例方法中存取类域
instanceVar = i;
}
m2.setInstanceVar( 22 );
m1.classVar=2呢?
程序中的m1.setClassVar( 1 );中参数不是1么,那m1.classVar应该是等于1呀。
覆盖了,所以mi.classVar就等于2了,