在java中使用多个类?

时间:2015-05-18 01:20:09

标签: java eclipse

我正在学习java的基础知识,我无法弄清楚为什么我不能在main方法中使用类。有人可以告诉我我的代码出错了吗?

主要班级

package Base;
    class Game {
        public static void main(String[] args){ 
            Data gameData = new Data();
            gameData.test();
            System.out.println(score);
    }
}
package Base;

public class Data {
    public void test(){
        int score = 100;

    }
}

3 个答案:

答案 0 :(得分:2)

您的代码存在的问题是您的main方法正在尝试访问类Data的局部变量。与字段和函数不同,其他类的局部变量对于嵌套 * 的相同级别的类是禁止的。

要解决此问题,请将score设为Data的成员变量,并添加一个getter方法来访问它:

public class Data {
    // Declaring score here makes it an instance variable
    private int score;
    // Giving score a getter lets others access the value,
    // but it does not let them set the new score
    public int getScore() { return score; }
    // test() method can be used to set the score to a specific value
    public void test(){
       score = 100;
    }
}

现在,main方法可以通过调用scoreData类访问getScore(),如下所示:

public static void main(String[] args){ 
    Data gameData = new Data();
    gameData.test();
    System.out.println(gameData.getScore());
}

* 嵌套类可以访问创建实例的函数的最终局部变量。

答案 1 :(得分:1)

变量score仅在test()类的方法Data范围内,在调用test()后它不会持续存在。< / p>

而不只是在score中声明test(),您可以将其返回:

public int test() {
    int score = 100;
    return score;
}

然后在您的主要内容中,您将存储来自test()的回复:

int score = gameData.test();

此时它会根据您的需要打印得分。

答案 2 :(得分:1)

例如,您可以将参数分数添加到Data类,如此

package Base;

public class Data {
    public int score = 0;
    public void test(){
        score = 100;
    }
}

然后在游戏类中:

package Base;
    class Game {
        public static void main(String[] args){ 
            Data gameData = new Data();
            gameData.test();
            System.out.println(gameData.score);
    }
}