定义以下:java
class OutClass{ static class InnerClass{} //静态内部类 }
静态内部类是指被声明为static的内部类,它不依赖与外部类实例而被实例化。静态内部类不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法(包含私有类型)。ide
2.成员内部类(member inner class)函数
定义以下:code
class OutClass{ class InnerClass{} //成员内部类 }
成员内部类就是普通的内部类,能够自由引用外部类的方法,无论是静态仍是非静态,可是内部不能够定义静态的方法和属性,并且只有被内部类被实例化后,这个类才能被实例化。继承
3.局部内部类(local inner class)接口
定义以下:class
class OutClass{ public void doSomeWork(){ class innerClass{} //局部内部类 } }
局部内部类是定义在代码块中的类,它的做用范围为所在的代码块中,极少用到。局部内部类跟局部变量比较相似,不能被public、protected、private以及static修饰,只能访问方法中定义为final类型的局部变量。若是局部内部类,在静态的代码块或者方法中,则会变成局部静态内部类。变量
4.匿名内部类(anonymous inner class)构造函数
定义以下:引用
class OutClass{ new Runnable(){ @Override public void run() { } }.run(); }
匿名内部类是一个没有类名的内部类,不能使用关键字class、extends、implement,没有构造函数,自身必须继承其余类或者接口。匿名内部类的好处是代码更加简洁。使用内部类须要牢记一下几个原则:
1.匿名内部类不能有构造函数;
2.匿名内部类不能定义静态成员、方法和类;
3.匿名内部类不能是public、protected、private、static;
4.只能建立内部类的一个实例;
5.一个匿名内部类必定是在new的后面,必须继承一个父类或者实现一个接口;
6.匿名内部类为局部内部类,因此局部内部类的全部限制都对其生效。