Java面试题-匿名内部类详解

本文旨在简化复杂的匿名内部类概念。匿名内部类是Java基础中的一个重要知识点,常在开发中被使用,但可能未引起足够重视。文章通过拆解其为“匿名”和“内部类”两部分,结合实例讲解其作为内部类简写形式的特点和使用前提,帮助读者理解如何将内部类转换为匿名内部类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

匿名内部类应该是属于java基础的知识点,后来我们在开发中使用的也不算很少了,只是我们可能没太注意自己所创建的或者使用的一些类就是匿名内部类,我看了排名很靠前的一些关于匿名内部类的一些 博客讲解的都很棒,只可惜跳跃的很大导致很多人不多看几次很难理解,我来把复杂简单化,如果有失误的大家一起来纠正!

  • 匿名内部类

    首先我们不妨把匿名内部类拆成“匿名”和“内部类”,在学Java过程中大家应该听说过匿名对象,匿名对象就是对象的简写格式,内部类就不用说了类里面又写一个类,如果您对内部类不是很清楚可以看看内部类相关的基础知识。
    以上所述匿名内部类可以说成是内部类的简写格式。

  • 匿名内部类的前提

    内部类必须继承或者实现一个外部类或者一个接口,
    不妨看看下面的代码,这是正常的内部类

class Outer
        {
        int num = 4;

        //这是内部类
        class Inner
        {
            void show()
            {
            System.out.println("show...."+num);
            }
        }

        public void method()
            {
        Inner in = new Inner();
        in.show();

        //等价于上面的调用
        //new Inner().show();
            }
        }

下面我们尝试让它变成匿名类,注意前提:必须实现一个接口或外部类

abstract class Demo
    {
    abstract void show();
    }

    class Outer
        {
        int num = 4;

        //这是内部类
        /*class Inner
        {
            void show()
            {
            System.out.println("show...."+num);
            }
        }
        */

        public void method()
        {
        //Inner in = new Inner();
        //in.show();

        //等价于上面的调用
        //new Inner().show();

        //这个就是匿名内部类
            new Demo()
            {
                void show()
                {
            System.out.println("show...."+num);
                }
            }.show();//这是继承完复写父类方法
        }
        }
  • 内部类的简写格式
    匿名内部类:其实就是一个匿名子类对象。
    格式:new 父类或接口()(子类内容)

以上只是简单的介绍匿名内部类,如何把内部类转化成匿名内部类的一些Demo,如果读者想进一步加以理解不妨可以看看匿名内部类的应用
点击该博客可以进一步了解匿名内部类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值