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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a283398689 中级黑马   /  2013-9-28 13:09  /  2300 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  自学视频上的匿名类 我一直不懂 。什么叫匿名类

怎么写法,。 有什么用

请哪位知道的告诉我

写出一个exam 给我看看 谢谢

4 个回复

倒序浏览
匿名类:就是没有给这个类起名称只是使用一次public class exam {          public static void main(String[] args)          {          new A().test();          }  } class A {    public void test()    {            System.err.println("start.......");    } }希望对你有帮助
回复 使用道具 举报


  1. //匿名对象要实例化的接口
  2. interface Head
  3. {
  4.         void think();
  5. }
  6. //匿名对象要实例化的类
  7. class Person
  8. {
  9.         private String name;
  10.         private int age;

  11.         Person(String name,int age)
  12.         {
  13.                 this.name = name;
  14.                 this.age = age;
  15.         }

  16.         public String toString()
  17.         {
  18.                 return name+"("+age+")";
  19.         }

  20.         public void show()
  21.         {
  22.                 System.out.println(toString());
  23.         }

  24.        
  25.         /*private class Person_head implements head
  26.         {
  27.                 void think()
  28.                 {
  29.                         System.out.println("Person thinking...");
  30.                 }
  31.         }*/

  32.         public void function()
  33.         {
  34.                 //此处为匿名内部类,他结合了创建类和创建对象于一体
  35.                 //既创建了一个新的Education的子类,又new了一个这个子类的对象,而且这个对象是匿名的
  36.                 new Head()
  37.                 {
  38.                         public void think()
  39.                         {
  40.                                 System.out.println(Person.this.toString()+" thinking...");
  41.                         }
  42.                 }.think();

  43.                 //此处为正常的内部类使用方法,就是被注释掉的代码部分
  44.                 //所以匿名内部类代码简洁很多,用起来很方便
  45.                 //Person_head ph = new Person_head();
  46.                 //ph.think();


  47.                 //注:匿名内部类的使用前提:必须是继承一个类或者实现接口,
  48.                 //    因为创建的部分要由父类或者接口的名字来完成
  49.                 //    匿名内部类要实现的方法最好不要超过3个,不然会很麻烦
  50.         }
  51. }
  52. class AnonymousDemo
  53. {
  54.         public static void main(String args[])
  55.         {
  56.                 AnonymousClassMethod_1();
  57.                 AnonymousClassMethod_2();
  58.         }

  59.         //这应该是匿名对象的最初定义,即对象没有一个“名字”
  60.         public static void AnonymousClassMethod_1()
  61.         {
  62.                 //此处是正常创建对象的方法,对象有一个对应的引用p,所以可以多次调用p
  63.                 Person p = new Person("Sunny",2);
  64.                 p.show();
  65.                 p.show();
  66.                 //此处是匿名对象,新建的对象没有与其对应的引用来接受他,所以只能调用一次
  67.                 new Person("Sunny",2).show();

  68.                 //注:一般对象的方法只调用一次时,可以使用匿名对象,也可将匿名对象作为参数传递给函数
  69.         }
  70.         public static void AnonymousClassMethod_2()
  71.         {
  72.                 //用一个Person类的匿名对象调用function
  73.                 //此处使用了匿名内部类,详见Person类中的function实现方法
  74.                 new Person("Sunny",2).function();
  75.         }

  76. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
To + 1 哥们多来26发帖回答问题,技术分太少.

查看全部评分

回复 使用道具 举报
匿名内部类:没有名字的内部类。就是内部类的简化形式。一般只用一次就可以用这种形式。

匿名内部类其实就是一个匿名子类对象。

想要定义匿名内部类:需要前提,内部类必须继承一个类或者实现接口。

匿名内部类的格式:new 父类名&接口名(){ 定义子类成员或者覆盖父类方法 }.方法。

匿名内部类的使用场景:
  当函数的参数是接口类型引用时,如果接口中的方法不超过3个。可以通过匿名内部类来完成参数的传递。
  其实就是在创建匿名内部类时,该类中的封装的方法不要过多,最好两个或者两个以内。

评分

参与人数 1技术分 +1 收起 理由
To + 1 哥们多来26版块发帖回答问题,早日攒够技术.

查看全部评分

回复 使用道具 举报
平时看到的new File(),这个就是一个常见的例子了,主要是在硬盘上开辟了空间,占用了内存,存储了一定的数据
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马