在乙個類中定義乙個類
特點:內部類可以訪問外部類的成員,包括私有修飾的
分類:
成員內部類訪問特點(非靜態):
外部類名.內部類名 物件名 = 外部類物件.內部類物件;
outer.inter oi = new outer().new inter();
(靜態)外部類名.內部類名 物件名 = new 外部類名.內部類名();
outer.inter oi = new outer.inter();
成員內部類的修飾符:
舉例:
class outer
//在外部類的成員位置訪問內部類成員,必須建立內部類物件
public void method() }}
//測試類
class outerdemo
}
區域性內部類jdk 1.7包含1.7,區域性內部類訪問區域性變數,區域性變數必須使用final修飾,
jdk1.8處理掉了編譯錯誤
面試題:為什麼在記憶體中使用final修飾?
因為區域性變數會隨著方法的呼叫完畢而消失,這個時候區域性物件並沒有立馬從堆記憶體中消失,還要使用那個變數,
為了讓資料還能繼續使用,就用final修飾,這樣,在堆記憶體裡面儲存的其實是乙個常量。
匿名內部類
前提條件:存在乙個類或者介面,可以是具體類,也可以是抽象類
格式:new 類名或者介面名();
本質:是乙個繼承了類或者實現了介面的子類匿名物件
看程式,寫結果:控制台輸出:30,20,10
class outer }}
//測試類
class test
}
按照要求,補齊**,在控制台輸出「helloworld」
inte***ce inter
class outer
}; }}
class test
}解析:
outer.method()
用類名呼叫方法,所以method()是靜態的
outer.method()能夠呼叫show(),說明前面部分可以返回乙個物件,並且該物件能訪問介面中的show();
內部類 成員內部類 區域性內部類 匿名內部類
public class 外部類 private int num 0 外部類如果要訪問內部類的成員,則需要通過內部類的物件訪問 使用方式 1.外部類使用內部類,主函式再使用外部類 2.通過new的方式 外部類.內部類 物件名 new 外部類 new 內部類 定義在方法內部的類,就是區域性內部類,只有...
成員內部類,區域性內部類,靜態內部類,匿名內部類
成員內部類 class demo1 innerclass a 內部類概述 b 內部類訪問特點 a 內部類可以直接訪問外部類的成員,包括私有。b 外部類要訪問內部類的成員,必須建立物件。外部類名.內部類名 物件名 外部類物件.內部類物件 class outer class demo2 innercla...
靜態內部類,成員內部類,區域性內部類,匿名內部類
一 靜態內部類 它是用static修飾的,在訪問限制上它只能訪問外部類中的static所修飾的成員變數或者是方法 演示 public class test 01 public static void main string args 二 成員內部類 成員內部類是最普通的內部類,它可以無條件訪問外部類...