首页 > 编程语言 >JAVA 匿名内部类 【小白快速理解】

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

时间:2024-12-03 11:02:22浏览次数:8  
标签:JAVA 内部 void cry 小白 接口 匿名 public

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

匿名内部类

1.定义

匿名:没有名字。内部类:在其他类内部的类。即,没有名字的子类对象、或者接口的实现类对象。

目的:在不定义子类的情况下创建Animal的子类对象,就可以使用匿名内部类。

把子类继承父类,重写父类中的方法,创建子类对象,合成了一步完成,减少了其中创建子类的过程。或者将实现类实现接口,重写接口中的方法,创建实现类对象,合成了一步完成,减少了其中创建实现类的过程。

匿名内部类在编写代码时没有名字,编译后系统会为自动为匿名内部类生产字节码,字节码的名称会以 外部类$1.class 的方法命名

2.匿名内部类的格式:

父类/接口 对象 = new 父类/接口(参数值){
    @Override
    重写父类/接口的方法;
}

流程:

1.定义一个抽象类(父类)

abstract class Animal{
    public abstract void cry();
}

2.使用匿名内部类,直接重写父类的方法,省去创建子类继承父类的过程和创建子类对象的过程

public class Test {
    public static void main(String[] args) {
        // 目标:认识匿名内部类,并掌握其作用。
//        Animal a = new Cat();
//        a.cry();

        // 1、把这个匿名内部类编译成一个子类,然后会立即创建一个子类对象出来。
        Animal a = new Animal(){
            @Override
            public void cry() {
                System.out.println("猫喵喵喵的叫~~~");
            }
        };
        a.cry();
    }
}

1.传统方式实现接口:

package com.hspedu.innerclass;
 
/**
 * 演示匿名内部类的使用
 */
public class AnonymousInnerClass01 {
    public static void main(String[] args) {
        Outer04 outer04 = new Outer04();
        outer04.method();
    }
}
 
class Outer04 { //外部类
    private int n1 = 10;//属性
 
    public void method() {//方法
        //基于接口的匿名内部类
        //1.需求:想使用接口IA,并创建对象
        //2.传统方式:实现该接口,并创建对象实例
        IA tiger = new Tiger();//接口的多态
        tiger.cry();
 
    }
 
}
 
interface IA {//接口
 
    public void cry();
}
class Tiger implements IA{//重复
    @Override
    public void cry() {
        System.out.println("老虎叫唤...");
    }
}

2.使用匿名内部类进行简化:

package com.hspedu.innerclass;

/**
 * 演示匿名内部类的使用
 */
 public class AnonymousInnerClass01 {
    public static void main(String[] args) {
        Outer04 outer04 = new Outer04();
        outer04.method();
    }
 }

class Outer04 { //外部类
    private int n1 = 10;//属性

    public void method() {//方法
        //基于接口的匿名内部类
        //1.需求:想使用接口IA,并创建对象
        //2.传统方式:,实现该接口,并创建对象实例
        //3.需求:Tiger/Dog类只使用一次,以后再也不使用
        //4.使用匿名内部类简化开发
//        IA tiger = new Tiger();//接口的多态
//        tiger.cry();
        IA tiger = new IA(){ //重点是这里
            @Override
            public void cry() {
                System.out.println("老虎叫唤...");
            }
        };
        tiger.cry();


    }

}

interface IA {//接口

    public void cry();
}

参考:
[1]: https://blog.csdn.net/cao124383050/article/details/102862120
[2]: https://blog.csdn.net/yang_guang3/article/details/133298411
[3]:https://blog.csdn.net/wjkqq0921/article/details/130118631?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-130118631-blog-133298411.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-130118631-blog-133298411.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=2

(感谢大佬的优质文章,让我受益颇多,遂记录下来)

标签:JAVA,内部,void,cry,小白,接口,匿名,public
From: https://blog.csdn.net/m0_52065616/article/details/144185886

相关文章

  • 2024年版最详细Python下载安装+PyCharm下载安装使用教程!新手小白必看!
    2024年版最新Python下载安装+PyCharm下载安装使用教程!一、Python的下载安装访问官网选择版本下载安装包安装Python验证安装二、PyCharm的下载安装访问官网下载PyCharm安装PyCharm首次启动与配置三、PyCharm的基本使用创建Python文件编写代码运行代码安装第三方库配置Py......
  • Java:174 基于SSM的萌宠宜家商城系统
    作者主页:舒克日记简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍本系统分为管理员、用户两个角色管理员的主要功能:在后台主要管理收货地址管理、购物车管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、字典管理、公告管理、......
  • Java:176 基于SSM在线购书商城系统
    作者主页:舒克日记简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍系统分为管理员、用户两个角色用户的主要功能:查看系统信息、注册登录、在线客服、交流论坛、购物车、个人中心、我的发布、我的订单、我的地址、我的收藏管理员的主要功......
  • Java:基于springboot的果蔬商城管理系统
    作者主页:IT小舟简介:Java领域优质创作者、Java项目、学习资料、技术互助文中获取源码项目介绍系统分为用户、管理员两个角色​主要适用于实体店的线上销售,打造线上线下一体化的销售模式,带动蔬菜的销售量,提高店铺的销售额。前台主要是登录注册、首页展示、分类搜索......
  • 基于Java+SSM+JSP学生信息管理系统(源码+LW+调试文档+讲解等)/学生信息/管理系统/学生
    博主介绍......
  • 基于Java+SSM+HTML5音乐播放器系统(源码+LW+调试文档+讲解等)/音乐播放器/音乐播放系
    博主介绍......
  • java解析doc文件
    依赖<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.11.2</version></dependency><dependency> <groupId>com.aspose</groupId> <artifactId>aspos......
  • 用Java和Vue写的个人股票分析系统
    轻量级股票数据中台简单易用的数据中台,服务于韭皇的可自控应用,方便二次开发;无复杂数据库依赖,启动即可得,追求至简,方便韭皇部署;外部接口可扩展,与核心功能隔离,可快速切换服务使用场景搭建自己的选股平台,分析数据私有化保存,二次开发私有化指标,自定义选股策略;当时编写程序的初......
  • java特殊编码生成
    工作中想要生成一个特殊编码,比如:SZ-2412030009,前面三位是编码固定开头,然后是yyMMdd,最后是当天的个数。期望能够生成一个计算当天task个数,第二天重新计数的一个编码,用于插入到数据库中作为特殊标识。便于用户快速查看任务时间和个数@ResourceprivateRedisTemplat......
  • Java 基础:解锁数组与二维数组
    目录一、Java数组:数据的“有序队列”数组的声明与初始化数组的访问与遍历二、Java二维数组:数据的“矩阵魔方”二维数组的声明与初始化二维数组的访问与遍历三、数组在实际编程中的“高光时刻”四、总结与展望在Java编程中,数组作为一种基础且强大的数据结构,犹......