今天没事,抽出时间总结了一下很多开发人员都想弄明白的一些JAVA基础知识(内部类和匿名内部类)。
一、JAVA中内部类和匿名内部类的区别
内部类:内部类可以是static的或者非static的,static内部类只能包含静态方法和静态类变量,只能访问外部类的静态元素,内部类可以实例化,多次使用。
匿名内部类:它只能使用一次,不区分static和非static。如果用到外部类的变量的话,必须是类变量或者实例变量,就是必须是类定义的变量,或者final的局部变量。匿名内部类如果是继承某个类的话是可以重写那个类的方法的,这个和普通内部类一样。
总结:可以用匿名内部类的地方都可以用内部类替换,但是用匿名内部类编码非常简洁,也容易读懂,除非你需要多次使用那个内部类,不然建议还是使用匿名内部类。
二、内部类的使用时机
1、实现事件监听器的时候(比方说actionListener 。。。采用内部类很容易实现);
2、编写事件驱动时(内部类的对象可以访问外部类的成员方法和变量,注意包括私有成员);
3、在能实现功能的情况下,为了节省编译后产生的字节码(内部类可以减少字节码文件,即java文件编译后的.class文件);
三、匿名内部类的使用时机
匿名内部类是内部类的一种特殊情况。它只有一个实例,而且没有引用。所以,一般在能用内部类实现,但是实例只用一次的情况下使用它(可以减少资源开销);
以上是本人通过几年的开发经验总结的。希望能对您一些JAVA初学者有所帮助。如果有什么不足或不对的地方,还请高手们指点。