概述:
在Java中,允许一个类定义在另外一个类的内部,前者为内部类,后者为内部类
作用:
内部类提供了刚好的封装性
内部类可以用private 。protected 等修饰,可以有更安全的权限控制
静态内部类
static修饰 。 由于有static修饰,所以这个静态的内部类与它的所属外部类对象无关,因此可以不需要产生外部类对象,直接用外部类类名访问
创建内部类对象,类里面,成员变量,方法,构造器,代码块,内部类都能定义
调用:内部类的类名: 外部类类名.内部类名
成员内部类
普通的成员内部类,要想用普通的成员内部类,首先要产生外部类的对象,然后用外部类对象 new 的语法 去产生内部类对象
创建对象: 创建成员内部类对象,成员内部类要依靠外部类对象,先创建外部类,在创建内部类
调用方法:
方式一:
外部类 对象名 =new 外部类();
外部类.内部类 对象名 = 外部类().new 内部类();
方式二:
外部类.内部类 对象名 = new 外部类().new 内部类();
局部内部类
局部内部类只能定义他的方法之内使用
不加权限
main方法里定义,class{ }
匿名内部类
匿名内部类实在new对象的同时,去定义这个对象里面的属性和行为,然而由于没有给这个类型取名字,所以只能用一次
使用前提: 需要存在一个接口或者抽象类
优点: 不用定义实现类,直接new出来,简化了实现类定义的过程
缺点:每次创建匿名内部类的对象,都要重新鞋方法
如果一个接口的实现了只需要使用了一次的时候,即可以shying匿名内部类