A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ❦_H_t 中级黑马   /  2013-11-21 17:08  /  1400 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ❦_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.         }
复制代码
这样来实现有什么意义呢?直接新建一个类继承后实现抽象方法和这个有什么区别吗?

8 个回复

倒序浏览
代码不知道为什么贴不完,少了两个中括号
回复 使用道具 举报
这样写就是为了方便。主要应用就是GUI里面了,学到那里你就明白了。专门去建一个类实现当然可以。只要你不怕麻烦。
回复 使用道具 举报
java的匿名内部类的语法规则看上去有些古怪,不过如同匿名数组一样,当你只需要创建一个类的对象而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚,
一般用在你要继承一个类或者实现一个接口,而且这个类只需要你个实例,以至于你不用给它起名字。
回复 使用道具 举报
我们接口作为参数时就经常使用匿名类传参!  
回复 使用道具 举报
加强封装,促进代码的可读性
回复 使用道具 举报
❦_H_t 中级黑马 2013-11-22 09:58:00
7#
那它的应用场合只适用于GUI吗?如果是话,何必要先讲匿名内部类呢?不如直接放到GUI那一块讲更容易理解
回复 使用道具 举报
匿名内部类也就是没有名字的内部类

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

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

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马