匿名类是一种特殊的内部类,它是在一个表达式内部包含一个完整的类定义。
内部类是在一个类的内部嵌套定义的类,
它可以是其它类的成员
也可以在一个语句块的内部定义
还可以在表达式内部匿名定义
匿名类与其他类的不同就在于匿名,也就是没有名称。 
Java中允许创建子类对象时
除了使用父类的构造方法外
还可以用类体
匿名类就是一个没有类申明的类体,因为没有名称,所有匿名类不可以申明对象,但却可以使用类体创建对象。
例如:
A是一个子类,那么下面的代码就是A的一个子类(匿名类)创建对象。   
new A(){    
匿名类的类体   
};    
由于匿名类是一个子类,所以和有一般子类的特征。可以继承父类的方法,同样也可以重写父类的方法。
值得提醒的是,在使用匿名类时,一定是在某个类中直接用匿名类创建对象,因此匿名类必定是内部类,所以和其他匿名类一样可以访问外嵌类中的成员变量和方法。
非静态匿名类的类体中不可有static成员变量和static方法。

尽管匿名类没有申明(这里说的声明就是,没法给匿名类创建的匿名对象来定义一个变量接收)的步骤,但可以在创建匿名对象时返回一个引用赋值给匹配参数。   
匿名类的常用方式是向方法的参数传值。
具体方法如下:   
abstract class Speak{    
        public abstract void speakHello();   
}

class Student{   
        void f(Speak sp){   
                sp.speakHello();   
        }   
}

public class AnonymousClassDemo {   
        public static void main(String[] args) {   
                Speak speak = new Speak(){   
                        public void speakHello(){    
                                System.out.println("大家好,祝工作愉快!");   
                        }   
                };    
                speak.speakHello();    
                Student st = new Student();   
                st.f(new Speak(){    
                        public void speakHello(){    
                        System.out.println("I am a student, how are you");   
                        }   
                }
                );   
        }   
}
上面红色的代码就是使用匿名类创建的匿名对象赋值给f()方法的参数。
上面代码的抽象类改成接口同样适用

AJPFX总结匿名类及其使用的更多相关文章

  1. 浅谈Java的匿名类

    在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码.就像下面这样.那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗? 思考以下代码 ...

  2. Second Day: 关于Button监听事件的三种方法(匿名类、外部类、继承接口)

    第一种:通过匿名类实现对Button事件的监听 首先在XML文件中拖入一个Button按钮,并设好ID,其次在主文件.java中进行控件初始化(Private声明),随后通过SetOnClickLis ...

  3. 学习笔记:因为java匿名类学习到接口的一些小用法

    在看CometD的示例代码时发现了许多有意思的代码,但说实话看别人的代码确实是件很累的事情,所以就看到这个知识点做一下记录吧.   先看一段代码: 代码1   这段代码中有一个new的操作,而且是在方 ...

  4. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

    开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...

  5. HttpCookie加匿名类实现多语言

    突然想做一个多语言网站,确不知道怎么实现好,突然想到了HttpCookie,然后页面后台用匿名类实现语言的储存. string lan = Request["str_lan"]; ...

  6. java匿名类和匿名对象及this的其他用法

    /* 匿名内部类:就是内部类的简写格式. 必须前提:内部类必须继承或者实现一个类或者接口. 匿名内部类其实就是一个匿名 子类对象. 格式:new 父类对象 or 接口(){ 子类内容:(覆盖父类的, ...

  7. c#匿名类,匿名对象

    何谓匿名类,其实本质和普通定义的类一样,只不过是由系统的编译器来完成的,首先举个例子. 一般情况 //声明一个类,包含贴别多的字段 public class Person() { public str ...

  8. java:使用匿名类直接new接口

    java中的匿名类有一个倍儿神奇的用法,见下面代码示例: package contract; public interface ISay { void sayHello(); } 上面是一个简单的接口 ...

  9. java内部类以及匿名类

    内部类 一个类内部定义的类称为内部类. 内部类允许把逻辑相关的类组织在一起,并控制内部代码的可视性. 内部类与外部类的结构层次如下. 顶层类:最外层的类 外部类:内部类所在的类 内部类:类内部定义的类 ...

随机推荐

  1. FZU1686 神龙的难题 —— Dancing Links 可重复覆盖

    题目链接:https://vjudge.net/problem/FZU-1686 Problem 1686 神龙的难题 Accept: 812    Submit: 2394 Time Limit: ...

  2. loadrunner性能测试步骤

    性能测试过程分为4个阶段:设计.构建.执行.分析/诊断/调节具体的工作流程如下图 设计 > 构建 > 执行 > 分析/诊断/调节 收集要求 设置测试环境 基准测试 诊断瓶颈 设计测试 ...

  3. JavaScript函数调用规则

    1. [代码][JavaScript]代码     JavaScript函数调用规则一 (1)全局函数调用:function makeArray( arg1, arg2 ){    return [t ...

  4. 从BadBoy导入脚本并调试

    一. 利用BadBoy录制自动化脚本,录制事件为禅道中创建bug 在badboy地址栏输入被访问的URL地址 录制成功后截图如下: 录制完成后在badboy窗口中回放确定脚本录制的正确性,回放成功后清 ...

  5. 通过HttpservletRequest对象获取客户端的真实IP地址

    这篇文章主要介绍了Java中使用HttpRequest获取用户真实IP地址,使用本文方法可以避免Apache.Squid.nginx等反向代理软件导致的非真实IP地址,需要的朋友可以参考下 在JSP里 ...

  6. [laravel]phpunit

    step1.install phpunit composer.json require中增加 "phpunit/phpunit":"4.0.*" 执行 comp ...

  7. leetcode 字符串动态规划总结

    问题1:leetcode 正则表达式匹配 请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配 ...

  8. Asset Catalog Help (一)---About Asset Catalogs

    About Asset Catalogs Use asset catalogs to simplify management of images that are used by your app a ...

  9. shell初级-----数据呈现方式

    输入与输出 Linux系统将每个对象当作文件处理,这包括输入和输出进程.Linux用文件描述符来标识每个文件对象.文件描述符是一个非负整数,可以唯一标识会话中打开的文件.每个进程一次多可以有九个文件描 ...

  10. cmd - 批量重命名文件

    相信大家或多或少都遇到过类似的情况:从网上下载了好多图片(或者其他的文件),这些图片的名字往往都是些乱七八糟的字母数字的组合,我们想要一次性修改几十张上百张的图片的名字应该怎么办呢? 这里有两种方法, ...