在JAVA开发中内部类对于我这种初级工程师来说并不熟悉,有必要了解下。本文主要是整理点资料。
点这里
首先内部类的分类:
1 成员内部类 (普通内部类)
2 局部内部类 (方法内的内部类)
3 匿名内部类 (跟在new 对象后面 ) 点这里看看
4 静态内部类 (static 修饰的 内部类)
我们通过实际的代码例子来介绍
public class OutClass {
public String a= "a";
private static String b= "b";
private void f() {
// TODO Auto-generated method stub
System.out.println(" 我是外部类 "+a+b);
OutClass class1= new OutClass(){
String a= "a1";
private void f() {
System.out.println(" 我是匿名内部类 "+a+b+ this.a);
}
};
};
class innerClass{
private String a="innerA";
private void f() {
System.out.println(" 我是普通内部类 f():"+ a+b + OutClass.this.a);
class innerClass2{
public void f() {
System.out.println(" 我是局部内部类 f():"+ a+b + OutClass.this.a);
}
}
}
}
static class innerStaticClass{
public String a="innerA";
public String b="innerb";
public void f() {
// TODO Auto-generated method stub
System.out.println(" 我是静态内部类 f()"+a+b+ this.a+ OutClass.b);
}
}
}
我们主要来看 普通内部类和 静态内部类的调用
public class Test {
public static void main(String[] args) {
// 普通内部类
OutClass outClass = new OutClass();
OutClass.innerClass inClass = outClass.new innerClass();
//静态内部类
OutClass.innerStaticClass inStaticClass =new OutClass.innerStaticClass();
inStaticClass.f();
}
普通内部类调用的时候必须依赖于外部类的实例
静态内部类可以直接创建,不依赖于外部类的实例
点这里看看
内部类可以无限制访问外部类,当然静态内部类不能访问外部类的实例变量(这是由于类加载的顺序导致的)
而外部类访问内部类必须要有内部类的实例才可以访问。