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

    所谓匿名类就是没有类名的类;

    下面代码演示一下匿名内部类的使用

    package Stephen.Class.chapter7;
    //匿名内部类测试
    public class AnonymousInnerClassTest {
        public static void main(String[] args) {
            DustMan man = new DustMan();
            man.cleanWithBroom();
            man.cleanWithDustCollector();
        }
    }
    //清洁工
    class DustMan{
        //使用扫帚清洁
        public void cleanWithBroom(){
            Utility util = new Utility(){//匿名内部类的建立
                public void clean(){
                    System.out.println("正在使用打扫清洁路面");
                }
            };
            util.clean();
        }
        //使用吸尘器清洁
        public void cleanWithDustCollector(){
            ElectronicUtil util = new ElectronicUtil(){
                public void clean(){
                    System.out.println("正在使用吸尘器清洁路面");
                }
            };
            util.clean();
        }
    }
    //设备
    interface Utility{
        public void clean();
    }
    //电子设备
    class ElectronicUtil{
        public void clean(){
            System.out.println("使用电子设备清洁");
        }
    }

    运行结果:

    请注意如下的代码:

    Utility util = new Utility(){//匿名内部类的建立
        public void clean(){
            System.out.println("正在使用打扫清洁路面");
        }
    };

    这段代码相当的器官,看上去很像是建立一个类型为Utility的对象,但是接口Utility并不能被实例化,而且在new Utility()后面又接着以花括号包围起来的代码,实际上这里建立了一个匿名内部类,这个类实现了Utility接口并且覆写了Utility接口的clean方法,其作用等同于以下的代码

    class AnonymousInnerClass implements Utility{
        public void clean(){
            System.out.println("正在使用扫帚清洁路面");
        }
    }
    AnonymousInnerClass util = new AnonymousInnerClass();

    由于建立这个类的时候没有类名,所以称为匿名内部类。

  • 相关阅读:
    ●BZOJ 2669 [cqoi2012]局部极小值
    ●HDU 6021 MG loves string
    试试数学公式~
    ●BZOJ 3622 已经没有什么好害怕的了
    ●BZOJ 2560 串珠子
    ●BZOJ 4361 isn
    ●BZOJ 2393 Cirno的完美算数教室
    ●BZOJ 1042 [HAOI2008]硬币购物
    ●BZOJ 2839 集合计数
    【LG2481】[SDOI2011]拦截导弹
  • 原文地址:https://www.cnblogs.com/lidaojian/p/2563330.html
Copyright © 2011-2022 走看看