成員內部類,區域性內部類,匿名內部類,及兩個例題

2021-10-01 03:12:20 字數 1214 閱讀 2450

在乙個類中定義乙個類

特點:內部類可以訪問外部類的成員,包括私有修飾的

分類:

成員內部類訪問特點(非靜態):

外部類名.內部類名 物件名 = 外部類物件.內部類物件;

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 二 成員內部類 成員內部類是最普通的內部類,它可以無條件訪問外部類...