在Java中使用类

时间:2013-02-01 16:55:23

标签: java

我正在尝试使用我制作的课程,但是当我打电话给课程时,这种方法不起作用,我有点迷失。

错误发生在程序底部的类调用和初始化。

package counter;

public class Counter {
    private int value;
    public Counter(int intialValue){
        value = intialValue;
    }

    private void count() {
        value = value + 1;
    }
    private void reset(){
        value = 0;
    }
    public int getValue(){
        return value;
    }

    Counter tally = new Counter();
    tally.count();

    }

5 个答案:

答案 0 :(得分:7)

必须将所有Java语句放入某种方法中。

目前你的最后两行不在方法中。

Counter tally = new Counter();
tally.count();

尝试这样的事情:

public class Counter {

  ... existing members ...

  public static void main(String[] args) {
    int initialValue = Integer.parseInt(args[0]);
    Counter tally = new Counter(initialValue);
    tally.count();
  }
}

答案 1 :(得分:3)

从你到目前为止看来,看起来你的类Counter有一个Counter作为实例成员,所以你有一个无限回归试图实例化它。你没有给出错误,但我希望得到一个StackOverflowError。

假设它已编译,这不应该发生,因为行tally.count()不应该是合法的。进入类的唯一内容是构造函数声明,方法声明,变量声明,初始化程序块和嵌套的内部类声明。你班底的代码不算任何一个。

此外,如果您包含带参数的构造函数,那么如果要调用零参数构造函数,则必须显式创建一个。调用不存在的零参数构造函数的代码将导致另一个编译器错误。

因此,您对构造函数存在误解,并且对在类中声明事物意味着什么感到困惑。

答案 2 :(得分:1)

Counter tally = new Counter();
tally.count();

在任何方法之外,这是错误。

答案 3 :(得分:0)

tally.count();应该在方法体内。

public void someMethod() {
    tally.count();
}

此外,编译器不会在您的类中包含默认的no-args构造函数,因为您已经编写了1-arg构造函数,因此您必须将有效的int值传递给构造函数。

Counter tally = new Counter(someintval);

答案 4 :(得分:0)

您尚未将值传递到类的实例中:

Counter tally = new Counter(10);

或者也许是因为它不在

之内
public static void main(String args) 

方法主体