內部類:指的是一個類的定義放在另一個類的內部。內部類作為外部類的一個成員,并且依附于外部類而存在的。
內部類仍是一個獨立的額的類,每個內部類都能獨立的繼承自一個(接口)的實現,所以無論外圍類是否已經集成了某個接口的實現,對于內部類都沒有影響。
內部類分為4種:
成員內部類:在一個包含類中定義的不使用靜態修飾符的類型 與成員變量、方法同一個層次 可以訪問包含類所有的成員 在包含類中中創建成員內部類實例的語法: this.new Innerclass(); 在包含類外創建成員內部類實例的語法 (new Outerclass()).new Innerclass();
方法內部類:定義在方法體中的類 方法內部類只能在定義該內部類的方法內實例化,不可以在此方法外對其實例化 最少使用的內部類形式 如同本地變量的定義,不允許有訪問修飾符 只能訪問用final修飾的本地變量
匿名內部類:沒有名字的內部類 只用到類的一個實例 類在定義后馬上用到 類非常?。∣LD SUN推薦是在4行代碼以下) 給類命名并不會導致你的代碼更容易被理解
靜態內部類:不能與包含類同名 編譯后生成一個完全獨立的類文件 只能訪問包含類所有靜態變量、靜態方法 要創建嵌套類的對象,并不需要其外圍類的對象 創建靜態內部類實例的語法: Outer.Inner inner = new Outer.Inner();
package study3_3;public class demo01 { public static void main(String[] args) { //Outer.Inner2 inner2 = new Outer.Inner2(); Outer outer = new Outer(); outer.setName("tom"); System.out.PRintln(outer.innerClass()); //要獲得一個內部類,必須先創建外部類 /*Outer outer = new Outer(); Outer.Inner inner = outer.getInnerClass(); inner.getInfo(); Outer.Inner inner2 = outer.new Inner();*/ }} package study3_3;public class Outer { private String name; public String innerClass(){ class Inner{ public String getInfo(){ return"hello:"+name; } } Inner inner =new Inner(); return inner.getInfo(); } public String getName(){ return name; } public void setName(String name){ this.name=name; } public String getInfo(){ return name; } //成員內部類 class Inner{ private String str; public String getInfo(){ return str +name; } //靜態內部類 /*static class Inner2{ public void pribtInfo(){// System.out.println(name); } }*/ }}
新聞熱點
疑難解答