java匿名类

news2024/11/30 20:35:54

什么是匿名实现类?
定义:
在java中,匿名实现类对象是一种特殊的对象,它是通过匿名类来创建的。匿名类是一个没有名字的类,它是在代码中直接定义和实例化的。匿名实现类对象通常用于实现接口或者扩展类,因为它可以快速地创建一个实现特定接口的对象,而不需要显式地定义一个新的类。

举例:
假如有一个接口MyInterface,该接口定义了一个方法doSomething(),要创建一个实现该接口的匿名实现类对象,可以使用以下代码:

MyInterface obj = new MyInterface(){
    public void doSomething(){
        //实现doSomething的方法
    }
}

在这个例子中,我们创建了一个匿名实现类对象obj,它实现了MyInterface接口,并实现了doSomething()方法。这个匿名实现类对象可以像其他对象一样使用,可以调用它的doSomething()方法。

注意:
由于匿名类没有类名,因此无法在其他地方重复使用。

我们在学习多线程的过程中一定会遇到以下的写法

new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i = 0;i<=40;i++){
                    ticket.sell();
                }
            }
        },"C").start();

Runnable是一个接口,Thread需要一个实现Runnable接口的对象,而我们这种写法中发现我们直接new了接口,给我们一种接口可以new的错觉

其实不是的,其实这是一种匿名内部类的写法,new之后的括号中其实可以看做你写了一个类,实现了这个接口,重写了方法,只不过这个类是匿名的,没有名字,所以称为匿名内部类。

并且对象的创建最终都是需要调用构造方法,接口中是没有构造方法的,类中显示声明构造方法,但默认有空参构造方法,接口中是没有的

1、匿名内部类

本质上是一个没有名字的局部内部类,定义在方法中、代码块中、等。
作用:方便创建子类对象,最终目的是为了简化代码编写。
2、格式

new 类|抽象类名|或者接口名(){
重写方法;
}

范例:

Employee a = new Employee(){
public void work(){
}
}

3、特点总结

匿名内部类是一个没有名字的内部类。
匿名内部类写出来就会产生一个匿名内部类的对象。
匿名内部类的对象类型相当于是当前new的那个的类型的子类型。
4、匿名内部类在开发中的使用形式了解

示例1


/**
    目标:掌握匿名内部类的使用形式
 */
public class Test {
    public static void main(String[] args) {
    //使用匿名内部类替代学生类,创建的类型是new的那个类的子类
        Swimming s = new Swimming() {
            @Override
            public void Swim() {
                System.out.println("学生游的很快");
            }
        };
        go(s);
    }

    /**
        方法:学生、老师、运动员可以一起游泳
     */
    public static void go(Swimming s)
    {
        System.out.println("开始游泳了~~");
        s.Swim();
        System.out.println("结束游泳了~~");
    }
}
//创建学生类
/*class Student implements Swimming{
    @Override
    public void Swim() {
        System.out.println("学生游的很快");
    }
}*/

//定义一个接口规范游泳
interface Swimming{
    void Swim();
}


使用总结:匿名内部类可以作为方法的实际参数进行传输。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Express框架开发接口之实现七牛云上传图片功能

安装和配置multer 注意&#xff1a;使用express.urlencoded()中间件无法解析multipart/form-data格式的请求体 数据。 当前项目&#xff0c;推荐使用 multer 来解析multipart/form-data格式的表单数据。https://www.npmjs.com/package/multer npm i multer 导入并配置multer &a…

【Apifox新支持】如何管理与调试 Dubbo 项目?

一、引入Dubbo3 不会介绍 Dubbo 如何使用&#xff0c;咱只提一嘴&#xff0c;然后说如何去测试 Dubbo 服务。Dubbo3 除了保持 2.x 的经典架构之外&#xff0c;还以解决微服务的进程通信为主要职责&#xff0c;通过丰富的服务治理能力来更好的管控微服务服务集群&#xff0c;简…

(免费领源码)java#springboot#MYSQL 电影推荐网站30760-计算机毕业设计项目选题推荐

摘 要 随着互联网时代的到来&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个B/S结构的电影推荐网站&#xff1b;电影推荐网站的管理工作系统化、规范化&#xff0c;也会提高平台形象&#xff0c;提高管理效率。 本…

玩转AIGC(人工智能生成内容)需要一些小技巧

玩转AIGC&#xff08;人工智能生成内容&#xff09;的确需要一些技巧&#xff0c;而Prompt提示词的选择非常关键&#xff0c;可以影响到生成的答案。以下是一些与AI对话的技巧和咒语示例&#xff1a; 1&#xff0c;明确问题 确保你的Prompt清晰明了&#xff0c;包括主题、问题…

领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统

领星ERP&#xff08;LINGXING&#xff09;是一款专业的一站式亚马逊管理系统&#xff0c;帮助卖家构建完整的数据化运营闭环。&#xff0c;致力于为跨境电商卖家提供精细化运营和业财一体化的解决方案。 官网&#xff1a;https://erp.lingxing.com 集简云无代码集成平台&…

四川思维跳动:抖店运营服务商的运营方案

抖店运营服务商&#xff0c;作为一种新兴的商业模式&#xff0c;正逐渐受到广大电商从业者的重视和青睐。抖店运营方案不仅可以帮助创业者快速进入电商行业&#xff0c;还可以为他们提供全方位的运营支持和服务。下面四川思维跳动小编就来详细介绍一下抖店运营服务商的优势和价…

防止重复提交请求

前景提要&#xff1a; ts 简易封装 axios&#xff0c;统一 API 实现在 config 中配置开关拦截器 axios 实现请求 loading 效果 用一个数组保存当前请求的 url&#xff0c;此时还未响应。如果再次发起同样请求&#xff0c;比对 url 发现已经存在数组中&#xff0c;则拦截请求&a…

基于类电磁机制算法的无人机航迹规划-附代码

基于类电磁机制算法的无人机航迹规划 文章目录 基于类电磁机制算法的无人机航迹规划1.类电磁机制搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用类电磁机制算法来优化无人机航迹…

【JAVA学习笔记】58 - 泛型

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter15/src/com/yinhai/generic_ https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter15/src/com/yinhai/customgeneric_ 一、泛型的入门和好处 1)请编写程序&#xff0c;…

c#的反编译工具ISPY和net reflector 使用比较

我有一份Asp.net程序需要修改&#xff0c;但没有源码&#xff0c;只有dll&#xff0c;需要使用反编译工具回复源码&#xff0c;尝试使用了市面上的两种主流的工具ISPY和net reflector &#xff0c;最终用ISPY恢复了源码。 比较 ISPY 恢复的代码和实际有差距&#xff0c;但还能…

2023年高校大数据实训平台需求

2023 年大数据实训平台的需求量呈现出快速增长的趋势。随着大数据技术的不断普及和应用&#xff0c;越来越多的企业和高校意识到大数据人才培养的重要性。因此&#xff0c;对大数据实训平台的需求量不断增加。 据了解分析&#xff0c;大数据实训平台需求量增加包括以下方面的原…

系统架构设计师(第二版)学习笔记----层次式架构设计理论与实践

【原文链接】系统架构设计师&#xff08;第二版&#xff09;学习笔记----层次式架构设计理论与实践 文章目录 一、层次式体系结构概述1.1 软件体系结构的作用1.2 常用的层次式架构图1.3 层次式体系可能存在的问题点 二、表现层框架设计2.1 MVC模式2.1.1 MVC三层模式2.1.2 MVC设…

【错误解决方案】ModuleNotFoundError: No module named ‘pycocotools‘

1. 错误提示 在python程序中&#xff0c;通过导入一个名为pycocotools的模块&#xff0c;但Python提示找不到这个模块。 错误提示&#xff1a;ModuleNotFoundError: No module named pycocotools 2. 解决方案 pycocotools是一个Python包&#xff0c;它提供了用于处理COCO数据…

一文看懂MySQL 5.7和MySQL 8到底有哪些差异?

目录 ​编辑 引言 1、数据字典和系统表的变化 2、JSON支持的改进 3、新的数据类型 4、安全性增强 5、性能改进 6、InnoDB存储引擎的改进 结论 引言 MySQL作为最常用的开源关系型数据库管理系统之一&#xff0c;一直在不断发展和改进。随着时间的推移&#xff0c;MySQ…

项目管理-组织战略类型和层次讲解

组织战略类型和层次 对于不同的组织战略可能会采用不同的项目管理形式&#xff0c;组织作为项目管理的载体&#xff0c;其战略决策对项目管理体系的架构&#xff0c;对组织与项目之间责权利的划分具有深远的影响&#xff0c;组织的战略文化也会影响到项目的组织文化氛围。因此…

XSSFWorkbook读取模板,批量填充并导出文件

1、pom文件导入 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.0</version> </dependency> <dependency><groupId>org.apache.poi</groupId><artifactId>…

AoMao Editor (angular) 使用 window.print() 实现 html 导出 PDF 记录

目录 一、需求描述 二、使用 jspdf html2canvas 导出遇到的问题 三、window.print() 导出具体实现 【api: toHtml】 一、需求描述 将 AoMao Editor 富文本插件中的内容导出为PDF。 二、使用 jspdf html2canvas 导出遇到的问题 试了很多插件&#xff0c;但 angular 能用的…

NHANES | Roc曲线评估胰岛素抵抗替代物与育龄女性不孕症之间的关联

郑老师统计课程&#xff0c;欢迎点击报名&#xff1a;Nhanes公共数据库挖掘 课程 2023年10月12日&#xff0c;温州医科大学育英儿童医院附属第二医院妇产科学者在《BMC Public Health》&#xff08;三区&#xff0c;IF4.5&#xff09;发表题为&#xff1a;" Association b…

PXI-6608 185745H-02 PXI-6527 185633D-01

PXI-6608 185745H-02 PXI-6527 185633D-01 人工智能技术并不新鲜&#xff0c;但运行它的数据和计算却很新鲜 对于那些对人工智能技术历史感兴趣的人来说&#xff0c;一些今天正在使用的技术从20世纪50年代和60年代就已经存在了。 但是&#xff0c;如果人工智能已经存在了这么…

Linux学习第31天:Linux MISC 驱动实验:温故知新

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 学习是一个不断重复的过程。只有不断的使用、修正&#xff0c;才能越记越牢。将学习到的新的知识点应用到以往的项目经验中&#xff0c;才能不断提升自我&#x…