定義在一個類內部的類稱為內部類。內部類訪問權限可以是public、protected、default或private,可以聲明為abstract供其他內部類或外部類繼承,可以聲明為static、final,也可以實現特定的接口。外部類可以訪問內部類的所有方法與屬性,包括私有屬性和方法。
ps:這里只討論成員內部類,不討論局部內部類(包含匿名內部類),本文所有涉及的內部類均為成員內部類。
創建實例
package com.cc.innerclass;public class OuterClass
{public static void main(String[] args){InnerClass innerClass = new OuterClass().new InnerClass();//通過外部類實例來實例化內部類對象OuterClass.StaticInnerClass innerClass2 = new OuterClass.StaticInnerClass();//實例化靜態內部類對象}private void outerClassMethod(){System.out.println("==========outerClassMethod=========");}private class InnerClass{private void innerClassMethod(){outerClassMethod();//內部類能訪問外圍類的所有成員}}private static class StaticInnerClass{}}
內部類訪問外部類
非靜態內部類可以訪問外部類的所有成員。
靜態內部類
內部類只有聲明static,才能定義靜態成員。靜態內部類只能訪問外部類的靜態成員,不能訪問外部類的非靜態成員,非靜態方法可以訪問外部類的靜態成員,實例化對象不需要外部類的實例。