我写了下面的测试代码:
class MyProgram
{
int count = 0;
public static void main(String[] args)
{
System.out.println(count);
}
}但它会给出以下错误:
Main.java:6: error: non-static variable count cannot be referenced from a static context
System.out.println(count);
^如何让我的方法识别我的类变量?
发布于 2010-04-01 18:10:39
您必须了解类和该类的实例之间的区别。如果你在街上看到一辆车,即使你看不清是哪种型号或类型,你也能立刻知道那是一辆车。这是因为您将看到的内容与类"car“进行了比较。这个类包含了类似于所有汽车的内容。可以把它想象成一个模板或者一个想法。
同时,您看到的汽车是" car“类的一个实例,因为它具有您期望的所有属性:有人驾驶它,它有一个引擎和轮子。
所以类说“所有的汽车都有一种颜色”,实例说“这个特定的汽车是红色的”。
在面向对象的世界中,您定义类,并在类内部定义Color类型的字段。实例化类时(当您创建特定实例时),会为颜色保留内存,您可以为此特定实例指定颜色。因为这些属性是特定的,所以它们是非静态的。
静态字段和方法与所有实例共享。它们用于特定于类的值,而不是特定的实例。对于方法,这通常是全局助手方法(如Integer.parseInt())。对于字段,它通常是常量(比如汽车类型,即你有一个有限的集合,不会经常改变)。
要解决您的问题,您需要实例化您的类的一个实例(创建一个对象),以便运行时可以为该实例保留内存(否则,不同的实例会相互覆盖,这是您不想要的)。
在您的示例中,尝试将此代码作为开始块:
public static void main (String[] args)
{
try
{
MyProgram7 obj = new MyProgram7 ();
obj.run (args);
}
catch (Exception e)
{
e.printStackTrace ();
}
}
// instance variables here
public void run (String[] args) throws Exception
{
// put your code here
}新的main()方法创建它所包含的类的一个实例(听起来很奇怪,但是因为main()是用类而不是用实例创建的,所以它可以这样做),然后调用一个实例方法(run())。
https://stackoverflow.com/questions/2559527
复制相似问题