java中的匿名内部类

关于java中的匿名内部类,首先需要理解它的双重身份,一是匿名,二是内部类。

1.匿名类其实不应该说是一个类,而是一个对象,就是直接通过new 关键字生成的一个对象,它的主要特点:没有名字,在java中,对象的名字就是它的一个引用,没有名字,也就意味着别的地方没法引用它,所以它相当于一个临时的对象,用完以后就销毁了。

2.内部类指的是在一个类的内部又定义了一个类,内部类的主要特点是只能被它的外部类所知悉,而不能被外面的其他类知悉。它的主要目的是为了让代码更佳紧凑。也就是当一个类只需要被它的外部类使用,而不需要在其他的地方使用的时候,就可以创建一个内部类。最常用的一种情况是:类A需要使用一个类B的对象,而类B中又要调用类A的成员变量。这是就可以把类B当成类A的内部类。内部类可以定义在类中的任何地方。

3.匿名内部类

匿名内部类就是既是匿名类又是内部类的类。它其实很常用,比如下面这串代码就是一种常见的匿名内部类的用法。

    loginBtn.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                mDialog = new ProgressDialog(LoginActivity.this);
                mDialog.setTitle("登录");
                mDialog.setMessage("正在登录服务器,请稍候……");
                mDialog.show();
                Thread loginThread = new Thread(new LoginThread());
                loginThread.start();
            }

        });

这串代码用匿名的内部类的方法实现了一个叫做OnClickListener()的接口,并且重写了父类的方法,这种代码在java中非常常见。

下面是一个简单的例子。

public class MainClass {
    public void method(IA ia) {
        ia.test();
    }

    public static void main(String[] args) {
        MainClass mc = new MainClass();
        mc.method(new IA() {
            @Override
            public void test() {
                System.out.println("重写内部类的test方法。");
            }

        });
    }
}

interface IA {
    void test();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值