java匿名内部类的理解

深入理解Java匿名内部类:语法、应用与最佳实践 在Java编程中,匿名内部类(Anonymous Inner Class)是一种没有名字的内部类,它通常在创建对象的同时定义类的实现。虽然Java 8引入的Lambda表达式在许多场景下可以替代匿名内部类,但理解匿名内部类的工作机制仍然非常重要。匿名内部类是Java语言中函数式编程的雏形,虽然在Java 8引入了Lambda表达式后,部分场景可以被替代,但理解匿名内部类仍然对掌握Java编程思想至关重要。// 如果取消注释,上面的匿名内部类访问counter会报错。// 示例1:实现接口的匿名内部类。 阅读详情

定义:没有显示名字的内部类

在没有实现内部类之前,我们要实现方法示例:

/**
*定义抽象类
*/
public abstract class Person {
    
    public abstract void song();
}
package com.example.demo.lambda;

/**
 * @author: mxq
 * @date: 2019/11/17 11 26
 * @desc:
 */
public class Child extends Person {
    @Override
    public void song() {
        System.out.println("I like song sing");
    }

    public static void main(String[] args) {
        Child child = new Child();
        child.song();
    }
}

返回结果:

可以很明显的看出来,就是如果想实现一个抽象方法,必须定义实现类继承抽象类实现抽象方法;下面我们看如果引入了匿名内部类;

package com.example.demo.lambda;

/**
 * @author: mxq
 * @date: 2019/11/17 11 29
 * @desc:
 */
//抽象类
abstract class Person{
    abstract void song();
}

public class Test {

    public static void main(String[] args) {
        Person person = new Person() {
            @Override
            void song() {
                System.out.println("I like song sing");
            }
        };
        person.song();
    }

}
返回结果

 

总结:为何叫做匿名内部类,首先因为通过实现接口生成的实现类没有名字且是一个内部类;

使用时的注意事项:特别强调一点就是,实现匿名内部类,因为没有实现类,所以不能定义实现类的构造方法,但是可以通过在抽象类时定义初始化方法实现;

例如下所示:

package com.example.demo.lambda;

/**
 * @author: mxq
 * @date: 2019/11/17 11 29
 * @desc:
 */
//抽象类
abstract class Person{
    private String name;
    abstract void song();
    public Person() {
    }
    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

}

public class Test {

    public static void main(String[] args) {
        Person person = new Person("小明") {
            @Override
            void song() {
                System.out.println("I like song sing");
            }
        };
        person.song();
        String name = person.getName();
        System.out.println("name="+name);
    }

}

返回结果如下所示:

全网最详细Seurat v5 流程复现(拿来即用) 本文是基于seurat v5版本的教程复现,主要依据来源于官网seurat v5建议大家有时间的话可以去官网进行详细阅读学习!本节内容在之前seurat v4的教程都很多都有提到,文章所用到的数据及代码已经给各位放在这里了,有需要自取!请点击这里哦提取码:bui1。 阅读详情

相关推荐

python123题目——个税计算器

类型:简单分支。

m0_62488776的博客 5802

Java基础 - 内部类03 - 匿名内部类详解

1.什么是匿名内部类 定义 : 1.匿名内部类是定义在类的局部位置,如方法中、代码块中,且没有明确的类名; 2.是一个内部类,本质还是一个类; 3.没有类名; 4.同时还是一个对象。 2.匿名内部类的特性(关键) * 1.匿名内部类可以访问所有的外部类的成员,包括私有的; * 2.不能添加访问修饰符,因为匿名内部类也是一个局部变量; * 3.作用域 : 仅在定义它的方法或代码块中有效; * 4.匿名内部类 访问 外部类的成员的方式

northcastle的博客 1万+

从格雷码到多频外差:结构光相位展开实战指南(附Python仿真代码)

本文深入探讨了结构光三维测量中的相位展开技术,重点对比了格雷码和多频外差法在工业检测、逆向工程等领域的应用。通过详细的原理图解和Python仿真代码,展示了两种方法在精度、抗噪性和适用场景上的差异,为实际工程中的技术选型提供实用指南。

weixin_42535703的博客 433

关于匿名内部类的一些理解

在介绍匿名内部类之前,先来说一下内部类 内部类就是将一个类定义在某个类或者方法里面,一共分为四种:成员内部类、局部内部类、匿名内部类、静态内部类 其中局部内部类就是将一个类定义在了一个方法之中,类似于 class Demo{ public void test(){ class Part{ //方法体 } } } 局部内部类不能用public或private访问说明符进行声明,访问权限被限制在方法或作用域内,好处是对外部世界完全的隐藏起

一纸春秋的博客 8392

IEEE Transactions模板中参考文献作者缩写、期刊名缩写

本文章记录如何在IEEE Transactions的模板中,解决参考文献的作者缩写、期刊名字缩写的问题。

weixin_43981621的博客 1万+

Pytorch学习笔记(III)——提取特征

目录一、引言二、具体步骤1、参数模型2、网络结构3、参数载入4、特征提取器5、读取图片三、完整代码 一、引言   深度学习在许多任务中主要充当着特征学习的作用,而学习完的特征才是后续应用的一个关键。本文将主要介绍,如何提取任意目标层的特征图。   本文以输入数据为图片为例。 二、具体步骤 1、参数模型 博主使用了ResNet50训练了一个人脸识别的网络   训练完成的深度学习模型,我们会保存一...

lockonlxf的博客 2643

笔试强训 day3

文章目录一、选择题二、编程题 一、选择题 1、以下代码运行输出的是 public class Person{ private String name = "Person"; int age=0; } public class Child extends Person{ public String grade; public static void main(String[] args){ Person p = new Child(); System.out.println(p.name); } } A 输

weixin_58030464的博客 1081

ROS TF坐标转换实战:从零搭建机器人坐标系(附常见问题排查)

本文提供了一份ROS TF坐标转换的实战指南,详细讲解了如何从零为机器人搭建完整的坐标系,并深入解析了TF的原理。内容涵盖静态与动态坐标变换的发布、URDF模型使用、以及Rviz和rqt_tf_tree等可视化调试工具。文章还附带了常见问题排查表,帮助开发者快速定位并解决TF树断裂、数据错位等典型问题。

weixin_29268385的博客 203

Java的匿名内部类详细解读

**# 一、匿名内部类的定义 最本质的还是一个类 是一个内部类(有关内部类的内容不在这里讲述了) 该类没有名字(但是系统会分配一个代号在内存中) 二、匿名内部类的应用场景 假设我们有一个接口A 内部有一个未被实现的方法eat 如果我们想在main中直接调用eat方法 则按照传统思路需要一个类B来实现接口A,同时再创建类B的对象来调用A 代码如下: public class Interface01 { public static void main(String[] args) {

xueyukun1的博客 2万+

Android13多路录音实战:如何用AudioRecord实现6通道音频采集(附完整代码)

本文详细解析了在Android13中使用AudioRecord API实现6通道音频采集的全流程,包括硬件兼容性检测、多通道配置、数据处理与性能优化。通过实战代码示例,帮助开发者掌握多路录音技术,适用于空间音频、环绕声录制等专业场景。

weixin_26965807的博客 477

uniapp(全端兼容) - 超详细接入百度统计功能,给uniapp全平台各端项目引入添加百度统计的插件统计流量详细的步骤教程(提供最新的百度统计源代码,详细的示例代码复制粘贴即可快速搞定!)

uniapp h5 app 使用加入接入百度统计,uniapp百度统计,uniapp详细引入百度统计的教程,uniapp接入百度统计,uniapp如何实现加入百度的统计代码,uniapp怎么植入百度统计详细教程,uniapp如何对接百度统计,uniapp百度统计不生效怎么办,uniapp使用百度统计不生效常见问题,uniapp引入百度统计后没有生效,uniapp h5网页接入百度统计代码后没有统计无效,uniapp最新接入使用百度统计功能,uniapp增加百度统计代码,uniapp app如何接入百度统计,

✅ 精选推荐文章 1万+

什么是匿名内部类

总结来说,匿名内部类是一种没有显式命名的内部类,主要用于简化代码并提供临时的对象实例或接口的具体实现。使用匿名内部类可以避免为简单的接口或抽象类单独创建一个具体的实现类,并且可以直接在需要的地方提供特定的行为。这样可以减少代码的复杂性和文件的数量,并提高代码的可读性和可维护性。匿名内部类的定义和使用通常发生在同一处,它可以直接作为参数传递给方法或构造函数,或者用于实现某个接口或抽象类的匿名实例。匿名内部类是Java中一种没有显式命名的内部类,它通常用于简化代码,特别是在需要创建临时对象或实现接口的情况下。

wzxue1984的博客 3091

《拉依达的嵌入式\驱动面试宝典》—操作系统篇(二)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 471

java中匿名内部类的理解

java中匿名内部类的理解昨天晚上看json解析方式时突然看到关于匿名内部类,自己想了下发现竟然从来没有认真考虑过匿名内部类为什么叫这个,然后去网上查了下好像也没看出什么头绪来,早上上班看到一篇文章一下子就明白了,所以晚上回来自己试试.我们都说匿名内部类就是没有名字的内部类,哪个类没有名字呢?好多文章都是直接告诉你什么什么是匿名内部类,对于当时的我来说完全是一头雾水,如下面: Runnabl

一生寻找我的拉布 4860

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JAVA 匿名内部类 【小白快速理解】

匿名:没有名字。内部类:在其他类内部的类。即,没有名字的子类对象、或者接口的实现类对象。目的:在不定义子类的情况下创建Animal的子类对象,就可以使用匿名内部类。把子类继承父类,重写父类中的方法,创建子类对象,合成了一步完成,减少了其中创建子类的过程。或者将实现类实现接口,重写接口中的方法,创建实现类对象,合成了一步完成,减少了其中创建实现类的过程。匿名内部类在编写代码时没有名字,编译后系统会为自动为匿名内部类生产字节码,字节码的名称会以 外部类$1.class 的方法命名。

m0_52065616的博客 658

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java 匿名内部类的理解

/** * Created by Kodulf on 2017/4/3. * 匿名内部类的测试 * 1: 在这个文件中创建一个类或者是接口,这个类可以是抽象类也可以是非抽象类,一定要注意,这个匿名内部类不一定就要是抽象类 * 其实只要是new 类名(){};就算是创建了一个匿名内部类了, * 这个时候如果用javac 去编译就会发现就出现类似"NiMingClass$1.class"的文

Kodulf的专栏 612

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java匿名内部类只可使用一次的理解

匿名内部类只能使用一次,就不能在使用。 为了验证“只能使用一次的实际含义,首先在程序中实例化了两个对象。并且在相应的类中加入了实现接口的匿名内部类: package com.Anonymouse; public class AnonymousInnerClass { public static void main(String[] args) { Outer04 outer04 = new Outer04(); outer04.method(); O

qq_18995321的博客 1335

【Java 匿名内部类】简单理解

我前面的博客也有对内部类作简单的解释,这篇博客我们对匿名内部类详解,在这篇博客中你可以了解到匿名内部类的使用、匿名内部类要注意的事项、如何初始化匿名内部类、匿名内部类使用的形参为何要为final 匿名内部类一、使用匿名内部类内部类二、注意事项三、使用的形参为何要为final四、匿名内部类初始化五、匿名内部类的使用六、Java抽象类和接口的区别 一、使用匿名内部类内部类 一个继承了类的子类的匿名对象 或者一个实现了接口的实现类的匿名对象,创建格式如下: new 父类构造器(参数列表)|实现接口() .

qq_44682003的博客 531

从入门到实战,带你深入理解Java匿名内部类

在Java的世界里,有一种特殊的内部类,它没有名字,我们称之为“匿名内部类”。它被称为“匿名”是因为它没有明确的类名,只能在创建的时候使用一次,之后就无法再引用它了。看似神秘,实则内涵丰富,这就是匿名内部类的魅力所在。//Java代码示例@Override}.show();在这段代码中,我们定义了一个OuterClass类,然后在display方法中创建了一个匿名内部类,并在该匿名内部类中覆盖了show方法。

万猫学社 956

java的知识点 抽象类 接口 匿名内部类 静态方法的 理解

普通类 抽象类 接口 三个大方向匿名内部类 也是重点,项目中经常遇见,各种的写法。静态方法 原理 的理解。

madong369的博客 469

AI如何帮你理解Java匿名内部类?

简单来说就是没有名字的局部内部类,直接在new对象时定义类体。它适合只使用一次的简单场景,比如事件处理。传统方式需要先定义单独的类实现接口,而匿名类可以直接在方法里就地解决。

GoldEagle19的博客 323

Java 快速理解匿名内部类,以及它的使用场景,注意事项

Java 快速理解匿名内部类 这篇文章主要讲解Java中匿名内部类的使用以及注意事项。匿名:没有名字的意思。内部类:写在其他类内部的类。匿名内部类的作用是简化代码。 原本我们需要创建子类或者实现类,去继承父类和实现接口,才能重写其中的方法。但是有时候我们这样做了,然而子类和实现类却只使用了一次(定义了一个对象)。这个时候我们就可以使用匿名内部类,不用去写子类和实现类,起到简化代码的作用。 匿...

执迷于技术和算法,让我们一起成长 2万+

关于匿名内部类的一些理解,java多态面试题

分布式技术专题+面试解析+相关的手写和学习的笔记pdf还有更多Java笔记分享如下:由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)[外链图片转存中…

m0_61369275的博客 919

Java匿名内部类的理解

匿名内部类

Aa980905zjf的博客 257

一篇文章理解Java的匿名内部类语法

什么是匿名内部类? 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,类B则称为外部类。 匿名内部类 是内部类的简化写法。它的本质是一个带具体实现的 父类或者父接口的 匿名的 子类对象 如果接口的实现类(或者是父类的子类)只需要使用唯一的一次,那么这种情况下就可以省略该类的定义,而改为使用 匿名内部类。 特征:声明匿名内部类的同时创建该类的对象 前提 存在一个类或者接口,这里的类可以是抽象类也可以是普通类。 语法格式: 继承父类: new 父类名称([实参列表]){ // 类的成员列表 }

sun10367的博客 404

深入理解Java匿名内部类

【内部类】 内部类就是将一个类定义到另一个类中,类中再嵌套一个类,所以可以划分为内部类以及外部类。 上面这种叫做成员内部类,有什么局限呢? 成员内部类可以直接访问外部类的成员变量以及成员方法。 都是外部类就不可以直接访问内部类的成员变量和成员方法。 一句话总结:外面看不到里面,里面看得到外面。 外面如果想要看到里面,需要请里面的人(是实例的,具体的对象)出来讲解内部的世界和情况。 外...

抛弃幻想,准备斗争 575
上一篇: 有关mysql的文章收集
下一篇: 微信缓存清理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值