内部类和匿名类

来源:互联网 发布:北大青鸟java人机猜拳 编辑:程序博客网 时间:2024/05/22 13:07

内部类在外部类中有特权:内部类可以毫无限制地访问外部类的所有成员。
编译之后,内部类也可产生

单独的.class文件,文件名为:外部类名$内部类名.class例5.22 内部类使用示例。
public class

OuterClass {
          private int x=10;
          class InnerClass{
                   int

y=20;
      }
          public static void main (String[] args){
              

OuterClass oc=new OuterClass();
               OuterClass.InnerClass ic=oc.new InnerClass();
 

              System.out.println("Outer:x="+oc.x);
               System.out.println

("InnerClass:y="+ic.y); 
          }
}使用内部类在编写事件处理驱动的程序时用起来很方便。
只有

内部类才能够是私有的--安全机制,只有其外部类的方法才能够创建内部类对象。  如果只需要为内

部类建立一个对象,甚至不必为该类指定一个名字,这种类被称为匿名内部类。
      如果满足下面的

一些条件,使用匿名内部类是比较合适的:
只用到类的一个实例
类在定义后马上用到 
类非常小(推荐

在4行代码以下) 
给类命名并不会导致你的代码更容易被理解
匿名类不能是抽象类,因为系统在创建匿名类的时候,会立即创建匿名类的对象。因此不允许将匿名类

定义成抽象类。
匿名类不能有构造方法,因为匿名类没有类名,无法定义构造方法,但匿名类可以定义

实例初始化块,通过实例初始化块来完成构造方法需要完成的事情。 
匿名类不能定义任何静态成员、

方法和类; 
匿名类不能是public、protected、private、static; 
只能创建匿名类的一个实例。