1)首先,用內(nèi)部類是因為內(nèi)部類與所在外部類有一定的關(guān)系画侣,往往只有該外部類調(diào)用此內(nèi)部類。所以沒有必要專門用一個Java文件存放這個類堡妒。
2)靜態(tài)都是用來修飾類的內(nèi)部成員的配乱。比如靜態(tài)方法,靜態(tài)成員變量皮迟,靜態(tài)常量搬泥。它唯一的作用就是隨著類的加載(而不是隨著對象的產(chǎn)生)而產(chǎn)生,以致可以用類名+靜態(tài)成員名直接獲得伏尼。
這樣靜態(tài)內(nèi)部類就可以理解了忿檩,因為這個類沒有必要單獨存放一個文件,它一般來說只被所在外部類使用爆阶。并且它可以直接被用 外部類名+內(nèi)部類名 獲得燥透。
以下舉例說明怎么使用:
Student類有個叫School的內(nèi)部類(非靜態(tài))
Student stu = new Student();
stu.School sch = new stu.School();
sch就是School的一個對象。
假如School是內(nèi)部靜態(tài)類:
Student.School sch = new Student.School();
需要注意的地方:
內(nèi)部類就像一個實例成員一樣存在于外部類中扰她。
內(nèi)部類可以訪問外部類的所有成員就想訪問自己的成員一樣沒有限制兽掰。
內(nèi)部類中的this指的是內(nèi)部類的實例對象本身,如果要用外部類的實例對象就可以用類名.this的方式獲得徒役。
內(nèi)部類對象中不能有靜態(tài)成員孽尽,原因很簡單,內(nèi)部類的實例對象是外部類實例對象的一個成員忧勿。