顾名思义,内部类就是定义在某个类内部的另一个类。
内部类可以声明成public或者private。 当内部类声明成public 或者private时,对其访问的限制与成员变量和成员方法完全相同。
内部类的声明格式:
class Outer{ private String info = "Hello world!!"; class Inner{ public void print(){ f(); //直接访问外部的私有方法; System.out.println(info); //直接访问外部类私有属性; } } private void f() { System.out.println("private method int outer."); } public void fun() { new Inner().print(); } } public class InnerClassDemo01 { public static void main(String[] args) { // TODO Auto-generated method stub new Outer().fun(); } }
内部类的优势在于可以方便的访问外部类的私有属性。
还可以使用static声明内部类。用static声明的内部类变成了外部类,但是用static声明的内部类不能访问非外部类的非static属性。
内部类除了可以通过外部类访问,还可以直接在其他类中进行调用,调用格式为:
外部类.内部类 内部类对象 = 外部类实例.new 内部类();
还可以在方法中定义一个内部类,但是在方法中定义的内部类不能直接访问方法中的参数,如果方法中的参数想要被内部类所访问,则参数前必须加上final关键字。