什么是内部类
内部类,顾名思义,就是在一个类当中再定义一个类。例如在python当中的闭包函数(函数内部再定义一个函数)。Python闭包函数的理解
如果在类Outer的内部再定义一个类Inner,此时Inner就称为内部类(或者称为嵌套类),而类Outer则称为外部类(或者宿主类)。
既然是嵌套类,就需要注意作用域的问题。内部类拥有外部类的所有元素的访问权限。作为对比,非内部类却不允许有private和protected权限的,内部类可以很好的实现隐藏。
内部类的特点
-
1.内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件。
-
2.内部类是外部类的一个成员,因此内部类可以自由的访问外部类的成员变量,无论是否为私有的private。如下图:内部类Inner可以自由的访问外部类的成员变量,前提是内部类不是静态的。
-
3.内部类如果申明为静态的,就不可以随便访问外部类的成员变量,仍然是只能访问外部类的静态成员变量。如下图:内部类Inner是静态的,只能访问外部类的静态属性。
关于内部类要注意的地方:
- 1.外部类只有俩种访问级别,public和默认。但是内部类却有四种访问级别:public、protected、private和默认。
- 2.在外部类当中直接可以通过类名访问内部类:
InnerClass ic = new InnerClass();
注意这里的InnerClass为内部类的类名 - 3.在外部类以外的其它类当中则需要通过内部类的完整类名访问内部类:
Test.InnerClass ti = newTest().new InnerClass(); - 4.内部类和外部类的名字不能一样。