java 内部匿名类_java匿名类和匿名内部类详解
匿名类是指没有类名的内部类,必须在创建时使用 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匿名类和匿名内部类详解相关推荐
- java局部内部类_Java 局部内部类、匿名内部类详解
外部类与内部类 众所周知,每个java文件必须有一个与这个java文件同名的外部类,这个外部类可以是public或default的.而除了这个同名外部类,还可以有与这个同名外部类平级的其他外部类,但它 ...
- java做jsp问题_java/jsp中 中文问题详解
java/jsp中 中文问题详解 更新时间:2006年10月13日 00:00:00 作者: 预备知识: 1.字节和unicode Java内核是unicode的,就连class文件也是,但是很多 ...
- java中throws用法_java中throws实例用法详解
在程序出现异常时,会有一个抛出异常的throw出现,这里我们要跟今天所讲的throws区分开.throws的作用是声明抛出,在名称上也跟throw有所不同.下面我们就throws对策概念.语法.实例带 ...
- java使用变量输出_JAVA定义变量与输出详解
一些重要知识 一个源文件里只能有一个public类,其它类数量不限.文件名与public类名相同 java程序严格区分大小写 JAVA应用程序的执行入口是main方法固定写法:public stati ...
- java闰年判断原理_java 面试题闰年判断详解及实例
java 面试题闰年判断详解及实例 java 闰年判断 前言: 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍数: 2. 年份是400 ...
- java读取本地文件_java 读取本地文件实例详解
java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...
- java编程50实例_java编程实例大全及详解谜底(50例).doc
java编程实例大全及详解谜底(50例).doc 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 谓 ...
- java list 移除_java 中List删除实例详解
java 中List删除实例详解 1.循环删除List中的元素 public static void main(String[] args) { List t=new ArrayList(); for ...
- java 读取本地文件_java 读取本地文件实例详解
java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...
- java语言数据库编程_JAVA语言数据库编程实例详解
本文主要向大家介绍了JAVA语言数据库编程实例详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. DOS命令登录MySQL数据库:mysql -h 127.0.0.1 -u root ...
最新文章
- 在.net开发中使用Log4Net组件
- if some one want to buy it
- 从网络、编码、内容感知、存储、分发看视频云端到端技术实践
- shell函数日期之间的操作(日期转秒,日期间隔秒,日期间隔天)
- 高考填报志愿计算机操作技巧,高考志愿填报技巧经验
- MathType使用中的四个小技巧
- python基础语法快速浏览
- 内存分配知识:全局,局部,静态变量
- 实战PHP数据结构基础之队列
- html星空代码在线,怎么操作html星空特效代码
- NVT NT98510 SDK介绍
- 市场调研-全球与中国天线测量系统市场现状及未来发展趋势
- Spring Boot日志格式化JSON方案
- DedeCMS 栏目三级联动树形菜单的代码
- 使用OpenSSL库接口,实现AES CBC加密,基于X509 base64编码证书的RSA非对称加密例子
- EIP-1559究竟在吵什么
- 【VUE项目实战】51、商品添加功能(一)
- flutter中的路由表和路由管理
- PBR 基础知识干货总结
- matlab多目标遗传算法,MOGA多目标遗传算法Matlab工具箱 NSGA-II