內隱類是一個定義在Class中的Class,有static和非static兩種。inner class是外部類的一個成員變量。non-static的inner class可以訪問外部類的所有變量。因為inner class是外部類的一個成員變量,其可以用public、private、protected和package private等modifier來定義。
Static Nested Classes
正如一個類的靜態變量,static inner class屬於其外部類,不屬於外部類的instance(object),他不能訪問外部類的非靜態變量。static inner class只能通過外部類的instance(object)來訪問外部類的非靜態變量。
注意:
static inner class其實和普通的類基本一樣。要想使用靜態內部類需要使用以下格式:
OuterClass.StaticNestedClass nestedObject =new OuterClass.StaticNestedClass();
Non-static Inner Class
Non-static inner class與外部類的非靜態成員變量類似,它屬於外部類的instance(對象),能夠訪問外部類對象的所有成員變量和方法。由於其能夠訪問外部類對象的成員變量和方法,因此他不能定義靜態變量和靜態方法。
內部類的對象只能存在於外部類的對象之中
由於內部類的對象只能存在於外部類的對象之中,因此,要聲明一個內部類的對象,需要先實例化外部類的一個對象。具體的語法格式如下:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();