黑马程序员技术交流社区

标题: 什么是匿名类 [打印本页]

作者: bj_zlh    时间: 2014-8-19 23:15
标题: 什么是匿名类
什么是匿名类?求解各位大神   举个详细点的例子

作者: abc83983682    时间: 2014-8-20 00:27
顾名思义,没有名字的类!
作者: lspooooo    时间: 2014-8-20 11:35
全称叫匿名内部类,没有名称,直接new父类对象
new 父类名&接口名(){定义子类成员或覆盖父类方法}.方法
作者: 忆梦追风    时间: 2014-8-20 21:00
见名知意,没有名字的类呗,但是这种类直接存在其他类中,属于内部类,这种类创建后只用一次,所以可以匿名创建
作者: —Jimmy—    时间: 2014-8-20 21:02
直接new出来,但是前面没有他的引用,就是你new的这个对象没有名字吧,这样理解
作者: bj_zlh    时间: 2014-8-20 22:11
恩,谢谢啊
作者: 付剑翊    时间: 2014-8-20 23:44
当你只想一次性的使用某一个类的某个功能,就可以定义一个匿名类
作者: happymouse    时间: 2014-8-21 00:38
可以分两种情况:
第一种不创建匿名内部类对象
  1. //抽象父类
  2. abstract class Inner
  3. {
  4.         public abstract void show();
  5. }
  6. class Outer
  7. {        
  8.                 public void song()
  9.                 {
  10.                         //创建匿名内部类
  11.                         new Inner()
  12.                         {
  13.                                 public void show()
  14.                                 {
  15.                                         System.out.println("show内部类运行成功");
  16.                                 }
  17.                                 //无对象匿名内部类可以定义自定义函数内容,也可以进行调用
  18.                                 public void abc()
  19.                                 {
  20.                                         System.out.println("abc内部类运行成功");
  21.                                 }
  22.                                 
  23.                         }.abc();
  24.                 }
  25.         
  26.         
  27.         public static void main(String[] agrs)
  28.         {
  29.                 new Outer().song();
  30.         }
  31. }
复制代码



第二种:
创建匿名内部类对象
  1. //抽象父类
  2. abstract class Inner
  3. {
  4.         public abstract void show();
  5. }
  6. class Outer
  7. {       
  8.                 public void song()
  9.                 {
  10.                         //创建匿名内部类
  11.                         Inner in=new Inner()
  12.                         {
  13.                                 public void show()
  14.                                 {
  15.                                         System.out.println("show内部类运行成功");
  16.                                 }
  17.                                 //有对象匿名内部类可以定义自定义函数内容,但不能用对象进行调用
  18.                                 public void abc()
  19.                                 {
  20.                                         System.out.println("abc内部类运行成功");
  21.                                 }
  22.                                
  23.                         };
  24.                         in.show();
  25.                         //下面语句编译不通过,因为创建匿名内部类对象时使用的是多态,父类对象里面没有abc()方法,
  26.                         //所以不能进行调用
  27.                         in.abc();
  28.                        
  29.                 }
  30.        
  31.        
  32.         public static void main(String[] agrs)
  33.         {
  34.                 new Outer().song();
  35.         }
  36. }
复制代码




作者: bj_zlh    时间: 2014-8-21 07:17
谢谢分享啊
作者: 小洁呵呵    时间: 2014-8-21 09:21
没有名字的类
作者: 男人你得有范    时间: 2014-8-21 09:25
什么时候用到匿名内部类




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