访问对象的属性和行为

发布时间 2023-11-27 10:04:50作者: 同学?

public class TransferProperty {
int i=47;//定义成员变量
public void call(){//定义成员方法
System.out.println("调用call方法");
for ( i = 0; i < 3; i++) {
System.out.print(i+" ");
if (i==2){
System.out.print("\n");
}
}
}
public TransferProperty(){//定义构造方法
}
public static void main(String[]args){
TransferProperty t1 = new TransferProperty();//创建一个对象
TransferProperty t2 = new TransferProperty();//创建另一个对象
t2.i=60;
System.out.println("第一个实例对象调用变量i的结果:"+t1.i++); //使用第一个对象调用类成员变量
t1.call();//使用第一个对象调用类成员方法
//使用第二个对象调用类成员变量
System.out.println("第二个实例对象调用变量i的结果:"+t2.i);
t2.call();//使用第二个对象调用类成员方法
}
}

结论:两个对象的产生相互独立,改变t1的i值不会影响t2的i值,如果希望变量不被其中任何一个对象改变,可以使用static关键字,一个被声明为static的成员变量的值可以被本类或其它类的对象共享


public class AccessProperty {
static int i = 47;//定义静态成员变量

public void call() {//定义成员方法
System.out.println("调用call()方法");
for (i = 0; i < 3; i++) {
System.out.print(i + "");
if (i == 2) {
System.out.print("\n");
}
}
}

public AccessProperty() {//定义构造方法
}

public static void main(String[] args) {//定义主方法
AccessProperty t1 = new AccessProperty();//创建一个对象
AccessProperty t2 = new AccessProperty();//创建另一个对象
t2.i = 60;//将类成员变量赋值为60
//使用第一个对象调用类成员变量
System.out.println("第一个实例对象调用变量i的结果:" + t1.i++);
t1.call();//使用第一个对象调用类成员方法
//使用第二个对象调用类成员变量
System.out.println("第二个实例对象调用变量i的结果:" + t2.i);
t2.call();//使用第二个对象调用类成员方法
}
}

结论:由于使用t2.i=60语句改变了静态成员变量的值,使用对象t1调用成员变量的值也为60,这正是i被定义为静态成员变量的效果,t1.i++语句执行完毕后,i的值变为3。当再次调用call()方法时又被重新赋值为0,做循环打印操作