簡體   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