java java面向对象-匿名内部类分析

20180410 java java面向对象-匿名内部类分析



匿名内部类的定义:就是没有名称的局部内部类,适用于只使用一次的类。


在开发中经常有这样的类,只需要定义一次,使用一次,就可以丢弃了。此时就不应该把这种类定义在文件中。再javaSE的事件中 或在安卓的事件处理中 这种类用的较多。
eg:不同的按钮 点击之后会有不同的响应操作,事件响应的代码 就不需要放在文件中定义。这样 就首选 匿名内部类。


匿名内部类:用的时候就定义它,用完就不要了。




匿名内部类特点:


特点1:匿名内部类本身没有构造器,但是会调用父类的构造器。




特点2:匿名内部类尽管没有构造器,但是可以在匿名内部类中提供一段实例初始化代码块,java虚拟机(JVM)在调用父类构造器后,会执行该代码块。
语法格式:
new 父类构造器(实参列表) 或 接口()
{
  //匿名内部类的类体部分
}






eg:


//指定USB规范
interface IUSB
{
  void swapData();
}


//USB版本鼠标
class Mouse implements IUSB
{
  public void swapData()
  {
    System.out.println("鼠标...");
  }
}


//主板(鼠标需要插到主板上工作)
class MotherBoard
{
  private static IUSB[] usbs = new IUSB[6];
  private static int index = 0;//表示插入到第几个位置


  //把设备插入到主板中的功能,接受IUSB类型的对象
  public static void pluginIn(IUSB usb)
  {
    if(index == usbs.length)
    {
      System.out.println("USB插槽已经满了");
    }


    usbs[index] = usb;
    index++;
  }


  //取出主板中的每一个USB设备,并工作
  public static void doWork()
  {
    for(IUSB usb:usbs)
    {
      if(usb != null)
      {
        usb.swapData();
      }
    }
  }
}


//实例:使用USB设备来工作
class USBDemo
{
  public static void main()
  {
    //创建鼠标对象
    MotherBoard.pluginIn(new Mouse());
    //安装打印机
    MotherBoard.pluginIn(new Print());


    //安装USB键盘(只安装一次)
    //创建一个IUSB的匿名实现类对象
    MotherBoard.pluginIn(new IUSB()
      {
        //匿名内部实体
        public void swapData()
        {
          System.out.println(键盘...);
        }
      }
    );
    


    MotherBoard.doWork();
  } 
}




特点3:
//创建一个






阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页