匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下:new()

{

//类的主体

};

这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。

匿名类有两种实现方式:

1、继承一个类,重写其方法。

2、实现一个接口(可以是多个),实现其方法。

下面通过代码来说明。public class Out

{

void show()

{

System.out.println("调用 Out 类的 show() 方法");

}

}

public class TestAnonymousInterClass

{

//在这个方法中构造一个匿名内部类

private void show()

{

Out anonyInter=new Out()

{

//获取匿名内部类的实例

void show()

{

System.out.println("调用匿名类中的 show() 方法");

}

};

anonyInter.show();

}

public static void main(String[] args)

{

TestAnonymousInterClass test=new TestAnonymousInterClass();

test.show();

}

}

程序的输出结果如下:调用匿名类中的 show() 方法

从输出结果可以看出,匿名内部类有自己的实现。

提示:匿名内部类实现一个接口的方式与实现一个类的方式相同,这里不再赘述。

匿名类有如下特点。

(1) 匿名类和局部内部类一样,可以访问外部类的所有成员。如果匿名类位于一个方法中,则匿名类只能访问方法中 final 类型的局部变量和参数。public static void main(String[] args)

{

int a=10;

final int b=10;

Out anonyInter=new Out()

{

void show()

{

//System.out.println("调用了匿名类的 show() 方法"+a);    //编译出错

System.out.println("调用了匿名类的 show() 方法"+b);    //编译通过

}

};

anonyInter.show();

}

(2) 匿名类中允许使用非静态代码块进行成员初始化操作。Out anonyInter=new Out()

{

int i;

{    //非静态代码块

i=10;    //成员初始化

}

public void show()

{

System.out.println("调用了匿名类的 show() 方法"+i);

}

};

(3) 匿名类的非静态代码块会在父类的构造方法之后被执行。

java 内部匿名类_java匿名类和匿名内部类详解相关推荐

  1. java局部内部类_Java 局部内部类、匿名内部类详解

    外部类与内部类 众所周知,每个java文件必须有一个与这个java文件同名的外部类,这个外部类可以是public或default的.而除了这个同名外部类,还可以有与这个同名外部类平级的其他外部类,但它 ...

  2. java做jsp问题_java/jsp中 中文问题详解

    java/jsp中 中文问题详解 更新时间:2006年10月13日 00:00:00   作者: 预备知识: 1.字节和unicode Java内核是unicode的,就连class文件也是,但是很多 ...

  3. java中throws用法_java中throws实例用法详解

    在程序出现异常时,会有一个抛出异常的throw出现,这里我们要跟今天所讲的throws区分开.throws的作用是声明抛出,在名称上也跟throw有所不同.下面我们就throws对策概念.语法.实例带 ...

  4. java使用变量输出_JAVA定义变量与输出详解

    一些重要知识 一个源文件里只能有一个public类,其它类数量不限.文件名与public类名相同 java程序严格区分大小写 JAVA应用程序的执行入口是main方法固定写法:public stati ...

  5. java闰年判断原理_java 面试题闰年判断详解及实例

    java 面试题闰年判断详解及实例 java 闰年判断 前言: 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍数: 2. 年份是400 ...

  6. java读取本地文件_java 读取本地文件实例详解

    java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...

  7. java编程50实例_java编程实例大全及详解谜底(50例).doc

    java编程实例大全及详解谜底(50例).doc 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 谓 ...

  8. java list 移除_java 中List删除实例详解

    java 中List删除实例详解 1.循环删除List中的元素 public static void main(String[] args) { List t=new ArrayList(); for ...

  9. java 读取本地文件_java 读取本地文件实例详解

    java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...

  10. java语言数据库编程_JAVA语言数据库编程实例详解

    本文主要向大家介绍了JAVA语言数据库编程实例详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. DOS命令登录MySQL数据库:mysql -h 127.0.0.1 -u root ...

最新文章

  1. 在.net开发中使用Log4Net组件
  2. if some one want to buy it
  3. 从网络、编码、内容感知、存储、分发看视频云端到端技术实践
  4. shell函数日期之间的操作(日期转秒,日期间隔秒,日期间隔天)
  5. 高考填报志愿计算机操作技巧,高考志愿填报技巧经验
  6. MathType使用中的四个小技巧
  7. python基础语法快速浏览
  8. 内存分配知识:全局,局部,静态变量
  9. 实战PHP数据结构基础之队列
  10. html星空代码在线,怎么操作html星空特效代码
  11. NVT NT98510 SDK介绍
  12. 市场调研-全球与中国天线测量系统市场现状及未来发展趋势
  13. Spring Boot日志格式化JSON方案
  14. DedeCMS 栏目三级联动树形菜单的代码
  15. 使用OpenSSL库接口,实现AES CBC加密,基于X509 base64编码证书的RSA非对称加密例子
  16. EIP-1559究竟在吵什么
  17. 【VUE项目实战】51、商品添加功能(一)
  18. flutter中的路由表和路由管理
  19. PBR 基础知识干货总结
  20. matlab多目标遗传算法,MOGA多目标遗传算法Matlab工具箱 NSGA-II

热门文章

  1. 多角度理解sigmoid,relu和tanh激活函数
  2. Java进阶知识 —— Java8 Stream语法
  3. 电脑如何设置全局代理
  4. Nginx 代理解决前端跨域问题
  5. DuplicateHandle的应用
  6. python得出谁是小偷_是谁查出了真正的小偷
  7. 【RocketMQ】ubuntu18下部署RocketMQ集群
  8. 使用独立显卡安装黑苹果,但无法扩展显示器的解决方案
  9. keytool 使用说明
  10. 计算机组成原理--计算机指令