java匿名内部类是什么意思?实例代码展示

BSO 2020-10-20 16:02:09 java常见问答 4785

上次已经为大家介绍过java内部类是什么意思的主要内容,今天再来为大家介绍一些与之相关的知识,也就是java匿名内部类是什么意思?并且用实际的代码为大家展示。一起来看看吧。

首先,简述一下匿名内部类的概念

一个继承了类的子类的匿名对象,或者一个实现了接口的实现类的匿名对象。

开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,得做如下几步操作。

1、定义子类

2、重写接口中的方法

3、创建子类对象

4、调用重写后的方法

我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快捷方式。

条件:

匿名内部类必须继承一个父类或者实现一个父接口。

格式,代码展示如下:

new 父类名或者接口名()
{
    // 方法重写
    @Override
    public void method()
    {
        // 执行语句
    }
};

使用方式

以接口为例,匿名内部类的使用。

定义接口,代码展示如下:

public abstract class FlyAble
{
    public abstract void fly();
}

创建匿名内部类,并调用,代码展示如下:

public class InnerDemo
{
    public static void main(String[] args)
    {
        /*
        1.等号右边:是匿名内部类,定义并创建该接口的子类对象
        2.等号左边:是多态赋值,接口类型引用指向子类对象
        */
        FlyAble f = new FlyAble()
        {
            public void fly()
            {
                System.out.println("我飞了~~~");
            }
        };
        //调用 fly方法,执行重写后的方法
        f.fly();
    }
}

通常在方法的形式参数是接口或者抽象类时,也可以将匿名内部类作为参数传递,代码展示如下:

 public class InnerDemo2
 {
     public static void main(String[] args)
     {
         /*
        1.等号右边:定义并创建该接口的子类对象
        2.等号左边:是多态,接口类型引用指向子类对象
       */
         FlyAble f = new FlyAble()
         {
             public void fly()
             {
                 System.out.println("我飞了~~~");
             }
         };
         // 将f传递给showFly方法中
         showFly(f);
     }
     public static void showFly(FlyAble f)
     {
         f.fly();
     }
 }

以上两步,也可以简化为一步,代码如下:

public class InnerDemo3
{
    public static void main(String[] args)
    {
        /*
           创建匿名内部类,直接传递给showFly(FlyAble f)
        */
        showFly(new FlyAble()
        {
            public void fly()
            {
                System.out.println("我飞了~~~");
            }
        });
    }
    public static void showFly(FlyAble f)
    {
        f.fly();
    }
}

以上就是关于java匿名内部类是什么意思的主要内容了。并且用实际的代码为大家展示出来。如果你对java知识感兴趣,想要了解更多java实例以及常见问题,敬请关注奇Q工具网。

推荐阅读:

java静态内部类详细介绍

java实例内部类详细介绍

java内部类最简单的应用分享,使用方法实例