JAVA中内部类和匿名内部类的区别,分别在什么时候使用它们?

今天没事,抽出时间总结了一下很多开发人员都想弄明白的一些JAVA基础知识(内部类和匿名内部类)。

一、JAVA中内部类和匿名内部类的区别

         内部类内部类可以是static的或者非static的,static内部类只能包含静态方法和静态类变量,只能访问外部类的静态元素,内部类可以实例化,多次使用。

        匿名内部类:它只能使用一次,不区分static和非static。如果用到外部类的变量的话,必须是类变量或者实例变量,就是必须是类定义的变量,或者final的局部变量。匿名内部类如果是继承某个类的话是可以重写那个类的方法的,这个和普通内部类一样。

        总结:可以用匿名内部类的地方都可以用内部类替换,但是用匿名内部类编码非常简洁,也容易读懂,除非你需要多次使用那个内部类,不然建议还是使用匿名内部类。

二、内部类的使用时机

      1、实现事件监听器的时候(比方说actionListener 。。。采用内部类很容易实现);

      2、编写事件驱动时(内部类的对象可以访问外部类的成员方法和变量,注意包括私有成员);

      3、在能实现功能的情况下,为了节省编译后产生的字节码(内部类可以减少字节码文件,即java文件编译后的.class文件);

 

三、匿名内部类的使用时机

       匿名内部类是内部类的一种特殊情况。它只有一个实例,而且没有引用。所以,一般在能用内部类实现,但是实例只用一次的情况下使用它(可以减少资源开销);

以上是本人通过几年的开发经验总结的。希望能对您一些JAVA初学者有所帮助。如果有什么不足或不对的地方,还请高手们指点。

 

 

 

你可能感兴趣的:(JAVA基础知识)