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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a80C51 中级黑马   /  2015-9-12 15:49  /  260 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1,定义
        匿名内部类其实是内部类的简写格式;
2,定义匿名内部类的前提
        内部类必须要继承一个类或者实现接口,但最多只能继承一个父类或者实现一个接口;
3,定义格式:
      
  1. new 父类或接口()
  2.         {
  3.                 定义子类的内容
  4.         }
复制代码

4,匿名内部类就是一个带有内容的匿名子类对象。
5,匿名内部类使用规则:
        a,匿名内部类不能是抽象类;
        b,匿名内部类不能定义构造器,但可以定义初始块。

具体代码实例如下:
  1. interface Inter
  2. {
  3.         public abstract void method();
  4. }

  5. class Test
  6. {
  7.         //知识点一、匿名内部类的使用之---补全代码
  8.         //第三步,根据得出结论,将该方法的定义写出来
  9.         public static Inter function()
  10.         {
  11.                 /*
  12.                 第四步,需要return一个Inter类型的对象;
  13.                 而通过观察,Inter中只有一个方法method(),故可以考虑使用匿名内部类来实现
  14.                 */
  15.                 return new Inter()
  16.                 {
  17.                         public void method()
  18.                         {
  19.                                 System.out.println("the result is here!!!!");
  20.                         }
  21.                 };
  22.         }
  23. }

  24. public class myAnonymousInnerClass
  25. {
  26.         public static void main(String[] args)
  27.         {
  28.                 /*
  29.                         第一步,通过观察代码,发现该语句直接调用Test类中的function()方法;
  30.                         因此,该function()应该数据类方法。需要使用static修饰
  31.                         第二步,经过该function()方法,最后又调用method()方法。只有Inter类型才能调用该方法。
  32.                         因此,该function()方法应该返回一个Inter类型的对象。
  33.                         故function()方法的定义格式已经出来了:public static Inter function();
  34.                 */
  35.                 Test.function().method();
  36.                
  37.                
  38.                 //知识点二、匿名内部类做为参数的使用
  39.                 show(new Inter()
  40.                 {
  41.                         public void method()
  42.                         {
  43.                                 System.out.println("show方法调用了一个匿名内部类!");
  44.                         }
  45.                 });//这里是内部类的一个易错点。此时如果成对打符号的话,则应该不会该问题。
  46.                
  47.                 //知识点三、如果没有接口等其他的东西,就想通过一个匿名内部类实现sayHello方法
  48.                 new Object()//Object类是所有类的基类或者叫父类。
  49.                 {
  50.                         public void sayHello()
  51.                         {
  52.                                 System.out.println("I am here to say hello!");
  53.                         }
  54.                 }.sayHello();
  55.                
  56.                
  57.         }
  58.        
  59.         public static void show(Inter in)
  60.         {
  61.                 in.method();
  62.         }
  63. }
复制代码

1 个回复

正序浏览
好厉害,很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马