內隐类是一个定义在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();