(一) java1.1以后版本添加了嵌套類(Inner Class,嵌套類、內部類)。嵌套類定義在類(外部類)里面。 嵌套類可以體現邏輯上的從屬關系。同時對于其他類可以控制內部類不可見等。 外部類的成員變量作用域是整個外部類,包括嵌套類。但外部類不能訪問嵌套類的PRivate成員。例子: public class Outer { private int size; public class Inner{ private int counter = 10; public void doStuff(){ size++; } } public static void main(String args[]){ Inner inner= new Inner(); inner.doStuff(); System.out.println(size); System.out.println(inner.counter); System.out.println(counter); //編譯錯 } }
?。ǘ┫旅嫜菔玖巳绾卧谕獠款愔鈱嵗鲆粋€public Inner類對象。
類名前加上外部類類名,new語句前加上外部類的引用變量。這很類似package的使用。 例子: public class Outer { private int size; public class Inner{ public void doStuff(){ size++; } } }
public class TestInner{ public static void main(String args[]){ Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); inner.doStuff(); } } ?。ㄈ┊攦炔款惻c外部類有同名變量時,缺省指本類中的變量。 例子:public class Outer { private int size; public class Inner{ private size; public void doStuff(int size){ size++; this.size++; Outer.this.size++; // 錯誤,Outer.size++因為size不是靜態變量 } } public static void main(String args[]){ this.size++; //錯誤,靜態方法使用非靜態變量this } } ?。ㄋ模┰诜椒ㄖ卸x一個嵌套類,注重嵌套類不可以訪問方法的局部變量。 因為方法的局部變量只存在與方法作用期間,故localvalue不可訪問。而final變量的生命周期超出了方法,所以fianlvalue可用。 public class Outer { private int size =5; public Object makeTheInner(int localvalue){ final int finalvalue = 6; class Inner{ public String toString(){return (“Inner is”+size+localvalue+finalvalue);} } return new Inner(); }