静态类非静态成员

时间:2014-04-04 07:36:22

标签: java static

我正在读一本关于Android游戏开发的书,而且我遇到了第一批代码:

public static class KeyEvent {
    public static final int KEY_DOWN = 0;
    public static final int KEY_UP = 1;

    public int type;
    public int keyCode;
    public char keyChar;
}

我的理解是,任何静态意味着只能有一个实例。

如果KeyEvent只有type的一个实例,为什么keyCodekeyChar和{{1}}也未声明为静态?

3 个答案:

答案 0 :(得分:4)

只有嵌套类可以声明为static;不是外/正常的。它允许您使用静态内部类而无需实例化外部类。

答案 1 :(得分:2)

您的代码是nested classstatic修饰符在这里意味着可以在不创建外部类对象的情况下访问此类。

假设外部类名为OuterClass,您可以调用:

KeyEvent ke = new OuterClass.KeyEvent();

答案 2 :(得分:0)

static 真正意味着“只能有一个实例”。

如果在 类中的任何声明中使用static关键字,static表示“我在此声明的内容不是封闭类的实例的成员,但它是本身的成员。“

话虽如此,如果您将嵌套类(类中的类)声明为静态,则意味着嵌套类声明不依赖于封闭类的实例,并且可以直接实例化。