Java匿名类,java匿名内部类详细介绍

KLQ 2020-09-07 11:22:11 java常见问答 5027

匿名类指的就是没有类名的内部类,它必须是在创建的时候使用new语句来声明类,今天要给大家介绍的就是和匿名类相关的内容,一起来进行一下详细的了解吧。

语法形式:(这样的形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口,使用匿名类能够使得代码更加简洁、紧凑,模块化程度更高)

new < 类或接口 > ()
{
    // 类的主体
};

匿名类实现方式:

1、继承一个类,重写其方法;

2、实现一个接口(可以是多个),实现其方法

下面的话就通过具体的代码来讲解一下:

public class Out
{
    void show()
    {
        System.out.println("调用 Out 类的 show() 方法");
    }
}
public class TestAnonymousInterClass
{
    // 在这个方法中构造一个匿名内部类
    private void show()
    {
        Out anonyInter = new Out()
        {
            // 获取匿名内部类的实例
            void show()
            {
                System.out.println("调用匿名类中的 show() 方法");
            }
        };
        anonyInter.show();
    }
    public static void main(String[] args)
    {
        TestAnonymousInterClass test = new TestAnonymousInterClass();
        test.show();
    }
}

输出结果:(可以看出,匿名内部类有自己的实现,注意:匿名内部类实现一个接口的方式和实现一个类的方式相同)

调用匿名类中的 show() 方法

匿名类特点:

1、匿名类和局部内部类相同,能够访问外部类的所有成员,假如,匿名类位于一个方法中,那么,匿名类只能访问方法中final类型的局部变量和参数;

public static void main(String[] args)
{
    int a = 10;
    final int b = 10;
    Out anonyInter = new Out()
    {
        void show()
        {
            // System.out.println("调用了匿名类的 show() 方法"+a);    // 编译出错
            System.out.println("调用了匿名类的 show() 方法" + b); // 编译通过
        }
    };
    anonyInter.show();
}

2、匿名类中允许使用非静态代码块进行成员初始化操作;

Out anonyInter = new Out()
{
    int i;
    { // 非静态代码块
        i = 10; //成员初始化
    }
    public void show()
    {
        System.out.println("调用了匿名类的 show() 方法" + i);
    }
};

3、匿名类的非静态代码块会在父类的构造方法之后被执行;

以上就是对于Java匿名类以及它的特点的一些介绍了,假如你还想了解更多的相关java基础内容,那么就请继续关注奇Q工具网来进行了解吧。

推荐阅读:

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

java实例内部类详细介绍

java静态内部类详细介绍