繁体   English   中英

静态类非静态成员

[英]Static Class Non-Static Member

我正在阅读一本有关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实例,为什么typekeyCodekeyChar不能声明为静态?

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

您的代码是一个nested class static修饰符在这里意味着无需创建外部类对象即可访问此类。

假设外部类称为OuterClass ,则可以调用:

KeyEvent ke = new OuterClass.KeyEvent();

static 并不是真正的意思是“只能有一个实例”。

如果类的任何声明中使用static关键字,则static表示“我在这里声明的不是封闭类的实例的成员,而是类本身的成员。”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM