一个类中的’static’关键字是做什么的?

问题:

具体来说,我正在尝试这段代码:

package hello;

public class Hello {

    Clock clock = new Clock();

    public static void main(String args[]) {
        clock.sayTime();
    }
}

但它给了错误

在静态方法main中无法访问非静态字段

所以我将clock的声明改为:

static Clock clock = new Clock();

它工作。在该声明之前放置该关键字是什么意思?它对于该对象可以做什么和/或限制什么?

回答:

 static成员属于类而不是特定实例。
这意味着only one instance of a static field exists [1]即使您创建了一百万个类的实例,也没有创建任何。它将被所有实例共享。
由于static方法也不属于特定实例,它们不能引用实例成员(您将如何知道要引用哪个实例Hello类?)。 static成员只能参考static成员。实例成员当然可以访问static成员。
 Side note:当然,static成员可以访问实例成员through an object reference
例:

public class Example {
    private static boolean staticField;
    private boolean instanceField;
    public static void main(String[] args) {
        // a static method can access static fields
        staticField = true;

        // a static method can access instance fields through an object reference
        Example instance = new Example();
        instance.instanceField = true;
    }

200新新新新新新新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗旗新新旗200新新新200新200新200新200新新200新新200新新新200新200新新200新新200新新200新新新200新新200新新200新新新200新新200新新200新新200新新200新新200新新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新新200新新200新新200新新新200新新200

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What does the ‘static’ keyword do in a class?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 2 = 2