Java是一门面向对象编程语言,封装、继承、多态是Java面向对象编程的三大特性。内部类是Java近年来推出的新特性之一,它使程序的结构更加清晰,也可以实现更加复杂的逻辑操作。
Java的内部类就是在一个类的内部声明的类,内部类可以访问其外部类的变量和方法,反之外部类也可以访问内部类的成员。这种特殊的类可以分为四种类型:
1. 成员内部类 2. 静态内部类 3. 局部内部类 4. 匿名内部类
外部类就是内部类的直接包含类,即内部类采用的是外部类的成员名。
public class Outer { private String name = "outer class"; public class Inner { private String name = "inner class"; public void show() { System.out.println("调用内部类的方法: " + name); System.out.println("调用外部类的变量: " + Outer.this.name); } } }
从上面的代码中可以看出,Inner类是Outer类的一个成员,在Inner类中可以直接访问Outer类的name变量。在内部类中使用外部类的方法与成员变量时要使用“外部类.this.成员变量或外部类名.方法”方式进行访问。
对于内部类和外部类,有以下需要注意的点:
1. Outer.Inner 内部类的完整名称是外围类$内部类。 2. 外围类可以访问内部类的成员,但是内部类不能访问外部类的静态成员。 3. 内部类可以访问外部类的所有成员,甚至包括私有成员,这是一种非常重要的特性。 4. 内部类只属于外部类的一个实例,也就是说一个外部类的实例如果要访问内部类的成员,只能通过此外部类的一个内部类实例。
无论是内部类还是外部类,在Java中都是非常重要的知识点。有了内部类,可以使程序模块化,让逻辑结构更清晰,同时也便于测试和维护。而外部类则是内部类的基础和补充,更好地完成了Java面向对象的设计思想。