内部类
- 内部类,在一个类的内部定义的类
interface OuterIFC { void method(); } public class Outer{ public class Inner1 {}//实例内部类 public static class Inner2 {} //静态内部类 private OuterIFC o =new OuterIFC() { int i=1 ; void method() {i++;} };//实现了OuterIFC 接口的匿名类 OuterIFC getInstance(){retern o;} void outerMethod(){ class Inner3{};//局部内部类 Inner3 in=new Inner3 (); } }// end of class Outer
- 匿名类是一种特殊的内部类
内部类的特性
实例内部类可以直接访问嵌套类的成员,如果是定义在方法中的局部内部类,还可以访问该方法中的final型的局部变量和final型的方法参数。参见ClassA.java
class ClassA{
private int vA=o;
class B(int vB=vA;)
void methodA(final int param1,int param2){
final int localIV=0;
class C {
int vC;
void methodC(){
int v1=vA;//合法
int v2=localIV//合法
int v3=param1//合法
int v4=param2//非法
}
}
}
}
- 静态内部类只能直接访问所嵌套类的静态成员,而不能直接访问所嵌套类的非静态成员,若一定要访问,必须通过外部嵌套类的实例访问。
Class A{
int vA=1;
static classB{
int vB=vA;//非法
}
}
Class C{
int vC=1;
static classD{
int vD= new C ().vC;//合法
}
}
- 实例内部类不能声明任何static成员,静态内部类中可以声明。