內部類:
概念:把類定義在其他類的內部,這個類就是內部類。
比如說在類a中定義了乙個內部類b,類
b就是乙個內部類。
內部類的訪問特點:
a:內部類可以直接訪問外部類的成員,包括私有。
b:外部類要訪問內部類,必須建立物件
內部類的位置:
成員內部類(類中方法外
)區域性內部類(方法中)
成員內部類:
外部類建立物件格式:外部類名。內部類名
物件名=外部類物件
.內部類物件;
成員內部的常見修飾符
。private為了保證資料的安全性
。static為了讓資料方便訪問。
。被靜態修飾的成員內部類,只能訪問外部類的靜態成員
。內部類被靜態修飾後的方法
。靜態方法
。非靜態方法
區域性內部類:
。可以直接訪問外部類的成員
。可以建立內部類物件那個,通過物件呼叫內部類方法,來使用區域性內部類功能。
區域性內部類訪問區域性變數的注意事項:
必須被final修飾:因為區域性變數會隨著方法的呼叫而消失,但是區域性物件並沒有立馬從堆記憶體中消失,還要使用哪個變數,為了讓資料還能被繼續使用,就用
final
修飾,這樣,在堆記憶體裡邊儲存的其實是乙個常量值。
例項:成員內部類
publicclasswai }
privatestaticvoidshow() }
publicclasstest }
結果:我是內部類的haha方法20
我是外部類的靜態成員方法
注意事項:如果將內部類改為private修飾那麼外部類就不能建立物件。
區域性內部類:
例項:
publicclassouter
} //建立內部類物件
inner
aa=newinner(); aa
.nei(); }
}test:
publicclasstest }
結果:薛之謙 18
胡歌 18
匿名內部類:
就是內部類的簡化寫法。
前提:存在乙個類或者介面
這裡的類可以是具體類也可以是抽象類。
格式:new 類名或者介面名
() 本質:
是乙個繼承了類或者實現了介面的子類匿名物件
1.請編寫程式,通過介面的方式建立匿名內部類
inte***ce inter
//在外部類
outer
的method()
方法中,建立匿名內部類
inte***ceinter
classouter };
} }classouterdemo }
結果:helloworld
2.請編寫程式,通過抽象類的方式建立匿名內部類
abstract class abstractclass
//在外部類
outer
的method()
方法中,建立匿名內部類
abstractclassperson
classpersondemo }
classpersontest
});
} }
結果:
我重寫了 show方法
3.請編寫乙個類中定義了乙個介面然後在該類中在使用這個介面.
publicclasstest
publicstaticvoidmain(string
args)
}.show(); }
}
結果:我重寫了show方法
總結:我們始終要記得匿名內部類是乙個物件。在乙個類中可以定義乙個內部介面,大多數情況下我們使用內部類的情況是當我們只需要用一次它裡邊的方法時。就不用重新建立物件。直接採用匿名內部類即可。
java基礎 匿名內部類
詳解 匿名內部類 現在有乙個抽象的animal類,其中有乙個抽象eat 方法,如何呼叫eat 方法。普通做法是,建立乙個子類cat繼承animal,然後重寫eat 方法,建立物件cat c new cat 呼叫eat 方法。我們可以簡便寫為 new cat eat 其中new cat 就是cat類的...
java基礎 內部類和匿名內部類
內部類 class a 編譯後的結果 內部類編譯後都是以這種形式 外部類 內部類 如何生成內部類 class test 注意點 class a b是a的內部類,b可以使用a的成員變數,但不是繼承它,僅僅是可以使用。匿名內部類 正常的程式 inte ce aclass b class aimpl im...
JAVA匿名內部類
abstract class base public abstract void f public class anonymousconstructor public void f public static void main string args 在此例中,不要求變數i 一定是final 的。...