zoukankan      html  css  js  c++  java
  • Java中的匿名内部类

    匿名内部类,是在方法体内,因为是匿名的,故只能使用一次。前提条件:必须继承一个父类或实现一个接口。

    简化代码。

    匿名内部类: 是一种特殊的语法,

      *   用来快速创建抽象类的子类对象
        *   用来快速创建 接口的实现类对象

    语法:
    new 抽象父类([参数]) 或 接口()
    {
    ....
    }

    • 一般的代码(未使用匿名内部类)
    interface IUsb
    {
        abstract public void swapData();
    }
    class Keyboard implements IUsb
    {
        public void swapData()
        {
            System.out.println("键盘的数据交换。。");
        }
    }
    class Mouse implements IUsb
    {
        public void swapData()
        {
            System.out.println("鼠标的数据交换。。");
        }
    }
    class Motherboard
    {
        public void pluginIn(IUsb usb)
        {
            usb.swapData();
        }
    }
    
    public class helloworld
    {
        public static void main(String[] args)
        {
            Motherboard m = new Motherboard();
            m.pluginIn(new Keyboard());
            m.pluginIn(new Mouse());
        }
    }

    生成的字节码文件:

    •  使用匿名内部类后
    interface IUsb
    {
        abstract public void swapData();
    }
    //***删除了class Keyboard 和 Mouse
    class Motherboard
    {
        public void pluginIn(IUsb usb)
        {
            usb.swapData();
        }
    }
    
    public class helloworld
    {
        public static void main(String[] args)
        {
            Motherboard m = new Motherboard();
            m.pluginIn(new IUsb()
                {
                    public void swapData()
                    {
                        System.out.println("键盘数据交换。。");
                    }
                });
            m.pluginIn(new IUsb()
                {
                    public void swapData()
                    {
                        System.out.println("鼠标数据交换。。");
                    }
                });
        }
    }

    生成的字节码文件:

    常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。

    昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
  • 相关阅读:
    2008年具有高校自主选拔录取资格的考生名单 江苏版
    OpenGL ES 2.0 for iPhone Tutorial
    Mathematica三维点插值算法(高维插值,多维插值)
    Mathematica颜色系,你喜欢哪一个?
    Khronos EGL and Apple EAGL
    ssh 免密码登陆配置
    2008年高考招生:北京大学自主选拔录取资格考生名单
    PlotLegends 应用
    Mathematica 如何更改文档的样式
    您为何而工作?
  • 原文地址:https://www.cnblogs.com/htj10/p/12360428.html
Copyright © 2011-2022 走看看