內部類,即類內部的類。類中類。形式以下:java
public class Outter{ // 外部類 class Inner{ // 內部類 } }
通常的非內部類,是不容許有 private 與protected權限的,但內部類能夠學習
平時咱們對類的訪問權限,都是經過類前面的訪問修飾符來限制的,通常的非內部類,是不容許有 private 與protected權限的,但內部類能夠,因此咱們能經過內部類來隱藏咱們的信息。這看起來沒什麼做用,可是當內部類實現某個接口的時候,在進行向上轉型,對外部來講,就徹底隱藏了接口的實現了。優化
內部類雖然和外部類寫在同一個文件中, 可是編譯完成後, 仍是生成各自的class文件,內部類經過this訪問外部類的成員。this
這個特色很是重要,它是內部類存在的最大理由之一。正是因爲他的存在使得Java的繼承機制更加完善。你們都知道Java只能繼承一個類,它的多重繼承在咱們沒有學習內部類以前是用接口來實現的。但使用接口有時候有不少不方便的地方。好比咱們實現一個接口就必須實現它裏面的全部方法。而有了內部類就不同了。它可使咱們的類繼承多個具體類或抽象類。code
有了匿名內部類,能夠不須要定義一個新的類,而直接經過匿名內部類建立對象。對那些只是用一次的類是很是方便的事情。對象