读书人

下面这个代码小弟我看不懂帮忙解释一

发布时间: 2012-02-02 23:57:14 作者: rapoo

下面这个代码我看不懂,帮忙解释一下吧?运行结果是什么?程序有错误的话帮忙改改。
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
{
private void scopeDemo()
{
int data = 100;
}

public int getData()
{
return data;
}
public void setData(int data)
{
this.data = data;
}
}
刚学习java 所以常问一些白痴的问题,希望大家理解。

[解决办法]
有错的。你要先在这个MethodDemo里面定义一个data变量的。

而且private void scopeDemo()
{
int data = 100;
}
这个方法里面的private不需要,有private的话,你的新建出的对象就访问不到这个方法。

然后。大致修改完之后,代码是这样子:

Java code
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;}}
[解决办法]
Java code
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引用,如果方法里面有同名的局部变量或形参,必须用第二种,不然访问的是局部变量或形参
Java code
 /**    * 返回data的数值    **/    public int getData()    {        return data;//没有同名局部变量,可以直接用变量名访问    }        /**    * 为data赋参数里的值    **/    public void setData(int data)    {        this.data = data;//有同名的形参,要带上this引用    }
[解决办法]
探讨

Java code

class MethodDemo
{
int data; //这里创建的数据是所有类里都可以使用的。


//如果这里是private,你在main里面有调用这个方法,那么就一定要
//public。因为private只能在本类里调用,在其他类不行。
public void scopeDemo()
{
……

读书人网 >J2SE开发

热点推荐