java中匿名内部类详解
发布时间 - 2026-01-11 00:41:34 点击率:次java匿名内部类:

1:匿名内部类,匿名内部类也就是没有名字的内部类。
2:匿名内部类的作用
正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。
3:匿名内部类的实现
匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现其方法。
4:匿名内部类的创建
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。
package com.mianshi.test;
/**
* 类名称:AnonymousInnerClassTest
* 描述: 匿名内部类测试
* 创建人:王秋林
* 创建时间:2017-2-12
*/
public class AnonymousInnerClassTest {
public static void main(String args[]){
AnonymousInnerClassTest test = new AnonymousInnerClassTest();
test.show();
}
//在这个方法中构造了一个匿名内部类
private void show(){
Out anonyInter = new Out(){//获取匿名内部类实例
void show(){//重写父类的方法
System.out.println("this is Anonymous InnerClass showing.");
}
};
anonyInter.show();//调用其方法
}
}
//这是一个已经存在的类,匿名内部类通过重写其方法,将会获得另外的实现
class Out{
void show(){
System.out.println("this is Out showing.");
}
}
5:匿名内部类的基本实现
(1)抽象方法实现
abstract class Person {
public abstract void eat();
}
public class Demo {
public static void main(String[] args) {
Person p = new Person() {
public void eat() {
System.out.println("eat something");
}
};
p.eat();
}
}
运行结果:eat something
(2)接口实现
interface Person {
public void eat();
}
public class Demo {
public static void main(String[] args) {
Person p = new Person() {
public void eat() {
System.out.println("eat something");
}
};
p.eat();
}
}
运行结果:eat something
由上面的例子可以看出,只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现。最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口。
(3)Thread类的匿名内部类实现
public class Demo {
public static void main(String[] args) {
Thread t = new Thread() {
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
}
};
t.start();
}
}
运行结果:1 2 3 4 5
(4)Runnable接口的匿名内部类实现
public class Demo {
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
}
};
Thread t = new Thread(r);
t.start();
}
}
运行结果:1 2 3 4 5
二、匿名内部类的注意事项
(1)匿名内部类不能有构造方法。
(2)匿名内部类不能定义任何静态成员、方法和类。
(3)匿名内部类不能是public,protected,private,static。
(4)只能创建匿名内部类的一个实例。
(5)一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
(6)因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
(7)匿名类和内部类中的中的this:有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。
以上就是本篇文章内容,需要的朋友可以参考
# java匿名内部类详解
# java
# 匿名内部类
# 简单谈谈java中匿名内部类构造函数
# java匿名内部类实例简析
# 详解Java匿名内部类
# Java匿名对象与匿名内部类
# 老生常谈 java匿名内部类
# Java中的匿名内部类小结
# java中的匿名内部类详细总结
# Java匿名内部类的使用方法举例详解
# 重写
# 类中
# 多线程
# 是在
# 在这个
# 多个
# 将会
# 两种
# 这是一个
# 没办法
# 对其
# 能有
# 可以使用
# 可以看出
# 指的是
# 来实现
# 第二种
# 要使
# 第一种
# 最常用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用Blade模板引擎?(完整语法和示例)
如何快速搭建自助建站会员专属系统?
如何基于PHP生成高效IDC网络公司建站源码?
黑客入侵网站服务器的常见手法有哪些?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何在建站宝盒中设置产品搜索功能?
iOS正则表达式验证手机号、邮箱、身份证号等
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
高性能网站服务器部署指南:稳定运行与安全配置优化方案
教你用AI润色文章,让你的文字表达更专业
如何用IIS7快速搭建并优化网站站点?
如何用景安虚拟主机手机版绑定域名建站?
浅谈redis在项目中的应用
北京网站制作的公司有哪些,北京白云观官方网站?
制作公司内部网站有哪些,内网如何建网站?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel如何处理文件下载请求?(Response示例)
JS弹性运动实现方法分析
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
公司门户网站制作流程,华为官网怎么做?
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
智能起名网站制作软件有哪些,制作logo的软件?
如何快速搭建高效简练网站?
PythonWeb开发入门教程_Flask快速构建Web应用
深圳网站制作平台,深圳市做网站好的公司有哪些?
如何快速上传建站程序避免常见错误?
Laravel安装步骤详细教程_Laravel环境搭建指南
如何用5美元大硬盘VPS安全高效搭建个人网站?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何用PHP快速搭建高效网站?分步指南
JS去除重复并统计数量的实现方法
Mybatis 中的insertOrUpdate操作
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
js实现获取鼠标当前的位置
javascript基于原型链的继承及call和apply函数用法分析
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
Laravel如何实现数据库事务?(DB Facade示例)
大同网页,大同瑞慈医院官网?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Python制作简易注册登录系统
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Laravel如何使用Service Container和依赖注入?(代码示例)

