内部类定义在外部类内部,外部类成为一个有类作对象的特殊类。
当内部类是Static时,访问内部类的属性或方法并不需要建立一个特定的内部类类型的对象,直接采用访问静态类属性或方法就可以了。
当内部类不是Static时,就需要在类定义中创建内部类类型的对象,访问该对象的属性或方法,OuterClass有权访问InnerClass的private属性或方法,反之InnerClass也有权访问OuterClass的private属性或方法。
OuterClass若要访问InnerClass的属性或方法,必须有一个内部类类型的对象首先被创立,这个中间对象的
匿名内部类:省略了要实现接口的类的定义,直接在参数列表里完成对接口的方法实现(其实也就是定义了一个实现接口的类,只不过没有给出这个定义的类的名字)。使得出现了类种类,即匿名内部类。
下两图分别展示了:直接定义一个实现类,在定义这个实现类的对象做参数的策略;
匿名实现类直接做参数的策略,即匿名内部类的策略。
public class AnonymousTest
{
public static void main(String[] Args)
{
AnonymousTest AT = new AnonymousTest();
//myClass mC = new myClass();
AT.testAnonymous(new myInterface()
{
public void func()
{
System.out.println("");
};
}
);
}
public void testAnonymous(myInterface mi)
{
System.out.println("exe");
}
}
class myClass implements myInterface
{
public void func()
{
System.out.println("implements myInterface func()");
}
}
interface myInterface
{
public void func();
}