二是在成員的引用上,有比較大的限制。一般的非靜態(tài)內(nèi)部類,可以隨意的訪問外部類中的成員變量與成員方法。即使這些成員方法被修飾為 private(私有的成員變量或者方法),其非靜態(tài)內(nèi)部類都可以隨意的訪問。則是非靜態(tài)內(nèi)部類的特權(quán)。因為在其他類中是無法訪問被定義為私有的成員變量或則方法。但是如果一個內(nèi)部類被定義為靜態(tài)的,那么在銀用外部類的成員方法或則成員變量的時候,就會有諸多的限制。如不能夠從靜態(tài)內(nèi)部類的對象中訪問外部類的非靜態(tài)成員(包括成員變量與成員方法)。這是什么意思呢?如果在外部類中定義了兩個變量,一個是非靜態(tài)的變量,一個是靜態(tài)的變量。那么在靜態(tài)內(nèi)部類中,無論在成員方法內(nèi)部還是在其他地方,都只能夠引用外部類中的靜態(tài)的變量,而不能夠訪問非靜態(tài)的變量。在靜態(tài)內(nèi)部類中,可以定義靜態(tài)的方法(也只有在靜態(tài)的內(nèi)部類中可以定義靜態(tài)的方法),在靜態(tài)方法中引用外部類的成員。但是無論在內(nèi)部類的什么地方引用,有一個共同點,即都只能夠引用外部類中的靜態(tài)成員方法或者成員變量。對于那些非靜態(tài)的成員變量與成員方法,在靜態(tài)內(nèi)部類中是無法訪問的。這就是靜態(tài)內(nèi)部類的最大使用限制。在普通的非靜態(tài)內(nèi)部類中是沒有這個限制的。也正是這個原因,決定了靜態(tài)內(nèi)部類只應(yīng)用在一些特定的場合。其應(yīng)用范圍遠遠沒有像非靜態(tài)的內(nèi)部類那樣廣泛。
三是在創(chuàng)建靜態(tài)內(nèi)部類時不需要將靜態(tài)內(nèi)部類的實例綁定在外部類的實例上。
通常情況下,在一個類中創(chuàng)建成員內(nèi)部類的時候,有一個強制性的規(guī)定,即內(nèi)部類的實例一定要綁定在外部類的實例中。也就是說,在創(chuàng)建內(nèi)部類之前要先在外部類中要利用new關(guān)鍵字來創(chuàng)建這個內(nèi)部類的對象。如此的話如果從外部類中初始化一個內(nèi)部類對象,那么內(nèi)部類對象就會綁定在外部類對象上。也就是說,普通非靜態(tài)內(nèi)部類的對象是依附在外部類對象之中的。但是,如果成員開發(fā)人員創(chuàng)建的時靜態(tài)內(nèi)部類,那么這就又另當別論了。通常情況下,程序員在定義靜態(tài)內(nèi)部類的時候,是不需要定義綁定在外部類的實例上的。也就是說,要在一個外部類中定義一個靜態(tài)的內(nèi)部類,不需要利用關(guān)鍵字new來創(chuàng)建內(nèi)部類的實例。即在創(chuàng)建靜態(tài)類內(nèi)部對象時,不需要其外部類的對象。具體為什么會這樣,一般程序開發(fā)人員不需要了解這么深入,只需要記住有這個規(guī)則即可。在定義靜態(tài)內(nèi)部類的時候,千萬不要犯畫蛇添足的錯誤。
相關(guān)推薦:2009年9月計算機等級考試二級JAVA考前密押卷(1)北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |