點擊查看:2015計算機(jī)等級考試二級Java入門教程章節(jié)匯總
點擊查看:2015計算機(jī)等級考試二級Java入門教程第五章匯總
5.11 嵌套類
這里的嵌套類只在一個Outside型對象范圍內(nèi)才有意義,這是因為Inside沒有聲明為Outside類的靜態(tài)成員。在建立一個Outside型對象以前,你不能建立任何的Inside對象。然而,當(dāng)你聲明一個包含嵌套類的類對象時,不需要建立嵌套類的對象,當(dāng)然,被類的構(gòu)造函數(shù)建立的對象除外。例如,假設(shè)我們用下列語句建立一個對象:
Outside outer-new outside()
沒有建立嵌套類的對象Inside.如果你現(xiàn)在希望建立一個嵌套類的對象,就必須使用一個作為限定詞的類的名字引用嵌套類。例如,己經(jīng)聲明了一個Outside類的對象,我們可以用下列語句建立一個Inside型的對象:
Outside.Inside inner=outer.new.Inside(); //Define a nested class object
這里我們己經(jīng)建立了一個嵌套類的對象,它與我們前面建立的anter對象相關(guān)聯(lián)。我們正是在outer對象的范圍內(nèi)建立一個Inside型的對象。
在Outside的非靜態(tài)成員方法中,你可以使用Inside類名,而不需要任何限定,它將由編譯器使用this變量自動地加以限定。所以我們可以在對象Outside的方法內(nèi)建立新的Inside對象:
Inside inner=new Inside( ); //Define a nested class object
它等價于:
this.Inside inner=this.new Inside(); //Define a nested class object
所有這些暗示了一個靜態(tài)方法不能建立一個非靜態(tài)嵌套的類對象。因為Inside類不是Qutside類的靜態(tài)成員,如果在Outside對象的范圍內(nèi)沒有己存在的Inside對象,則引用一個不存在的對象將是錯誤的。由于Inside不是Outside類的一個靜態(tài)數(shù)據(jù)成員,如果Outside類中的一個靜態(tài)方法試圖直接地建立一個Lnside型的對象,而開始并不存在一個Outside型的對象,這種嘗試在一個對象的合法范圍外建立對象的操作將是非法的。
還有,因為類Inside不是一個Qutside類的靜態(tài)成員,所以它不能依次返回它自己包含的任何靜態(tài)數(shù)據(jù)成員。由于Ir}ide本身不是靜態(tài)的,所以它不能用靜態(tài)成員充當(dāng)一個自由穩(wěn)定的類,這存在著邏輯上的矛盾。
嵌套類通常用來定義至少與包含它的類的對象有密切關(guān)聯(lián)的對象,并且在兩個類之間經(jīng)常存在著緊密的結(jié)合。
相關(guān)推薦:
2015計算機(jī)等級考試二級Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |