[英]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
實例,為什么type
, keyCode
和keyChar
不能聲明為靜態?
只有嵌套類可以聲明為static
; 不是外部/普通類。 它允許您使用靜態內部類而無需實例化外部類。
您的代碼是一個nested class
。 static
修飾符在這里意味着無需創建外部類對象即可訪問此類。
假設外部類稱為OuterClass
,則可以調用:
KeyEvent ke = new OuterClass.KeyEvent();
static
並不是真正的意思是“只能有一個實例”。
如果在類的任何聲明中使用static關鍵字,則static
表示“我在這里聲明的不是封閉類的實例的成員,而是類本身的成員。”
話雖如此,如果您將嵌套類(類中的一個類)聲明為靜態的,則意味着嵌套類聲明不依賴於封閉類的實例,並且可以直接實例化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.