日期:2014-05-20 浏览次数:20731 次
package cn.edu.zju.cst.bean; public class MethodMember { public static void main(String [] args) { MethodDemo methodDemo = new MethodDemo(); methodDemo.scopeDemo(); System.out.println(methodDemo.getData()); methodDemo.setData(100); System.out.println(methodDemo.getData()); } } class MethodDemo { int data=0; void scopeDemo() { int data = 100; } public int getData() { return this.data; } public void setData(int data) { this.data = data; } }
------解决方案--------------------
class MethodDemo { int data; //这里创建的数据是所有类里都可以使用的。 //如果这里是private,你在main里面有调用这个方法,那么就一定要 //public。因为private只能在本类里调用,在其他类不行。 public void scopeDemo() { //int data = 100; //本地变量,周在这个方法里创建的它的可用范围就在这个方法里,class里是看不到的。 //你可以在这里写int data但是这个数据不会到类里的data,他们是2个不同的变量。 this.data = 100; } /** * 返回data的数值 **/ public int getData() { return data; } /** * 为data赋参数里的值 **/ public void setData(int data) { this.data = data; } } public class MethodMember { public static void main(String [] args) { //创建一个MethodDemo类的对象 MethodDemo methodDemo = new MethodDemo(); //调用scopeDemo方法,使其data变量赋值为100 methodDemo.scopeDemo(); //输出得到对象里的data然后输出 System.out.println(methodDemo.getData()); //调用setData方法来为data附上新的值 methodDemo.setData(100); //再次输出 System.out.println(methodDemo.getData()); } }
------解决方案--------------------
楼上回答得已经很详细了,我稍微再补充一下:访问成员变量有两种方式,第一种是直接用变量名,第二种是用this引用,如果方法里面有同名的局部变量或形参,必须用第二种,不然访问的是局部变量或形参
/** * 返回data的数值 **/ public int getData() { return data;//没有同名局部变量,可以直接用变量名访问 } /** * 为data赋参数里的值 **/ public void setData(int data) { this.data = data;//有同名的形参,要带上this引用 }
------解决方案--------------------