黑马程序员技术交流社区

标题: 关于学习了匿名内部类的疑惑 [打印本页]

作者: ❦_H_t    时间: 2013-11-21 17:08
标题: 关于学习了匿名内部类的疑惑
本帖最后由 ❦_H_t 于 2013-11-22 20:04 编辑

首先,匿名内部类到底在什么场合适合应用?看了毕老师的视频,虽然有提及到,但是却没有真正理解到
还有匿名内部类
  1. abstract class Person {
  2.     public abstract void eat();
  3. }

  4. class Demo{
  5.     public static void main(String [] args){
  6.         Person p = new Person(){
  7.             public void eat(){
  8.                 System.out.print("吃东西");
  9.             }      
  10.         }
复制代码
这样来实现有什么意义呢?直接新建一个类继承后实现抽象方法和这个有什么区别吗?

作者: ❦_H_t    时间: 2013-11-21 17:12
代码不知道为什么贴不完,少了两个中括号
作者: 汪洋大海    时间: 2013-11-21 17:38
这样写就是为了方便。主要应用就是GUI里面了,学到那里你就明白了。专门去建一个类实现当然可以。只要你不怕麻烦。
作者: che201311    时间: 2013-11-21 17:45
java的匿名内部类的语法规则看上去有些古怪,不过如同匿名数组一样,当你只需要创建一个类的对象而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚,
一般用在你要继承一个类或者实现一个接口,而且这个类只需要你个实例,以至于你不用给它起名字。
作者: 一步一脚印    时间: 2013-11-21 20:13
我们接口作为参数时就经常使用匿名类传参!  
作者: 唐志海    时间: 2013-11-21 20:15
加强封装,促进代码的可读性

作者: ❦_H_t    时间: 2013-11-22 09:58
那它的应用场合只适用于GUI吗?如果是话,何必要先讲匿名内部类呢?不如直接放到GUI那一块讲更容易理解
作者: ypeusksk    时间: 2013-11-22 10:07
匿名内部类也就是没有名字的内部类

正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口
作者: 樊志伟    时间: 2013-11-22 18:08
new一个匿名内部类对象就是你只用这个对象操作一两次其方法,操作完之后就不用了。
至于为什么不用一个新类实现抽象方法之后在new一个对象是因为:匿名内部类用完之后在就可以不用,被回收。而 你说的那种实现抽象类之后再new出的对象的会一直等到程序结束后才能被当作垃圾回收。
简而言之就是,如果你想要只用一次,就用你贴子里的这种方法,这种方法节省资源。
如果你想一直使用new出的对象的话,就用第二种方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2