什么是匿名内部类,如何使用匿名内部类

本文详细介绍了Java中的匿名内部类,它既可以定义类又可以作为对象。匿名内部类可以直接访问外部类的所有成员,包括私有成员,并且在作用域上仅限于定义它的方法或代码块。文章还讨论了当内外类成员重名时的访问规则。

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

  1. 匿名内部类既是一个类的定义,同时本身也是一个对象,它既有定义类的特征,也有创建对象的特征
class outer05{
    private int n1=100;
    public void f2(){
        //基于类的匿名内部类
        person person = new person(){
            @Override
            public void hi() {
                System.out.println("重写了hi方法");
            }
        };
        person.hi();//动态绑定 真正的运行类型是outer05$1
        new person(){
            @Override
            public void say1(String name) {
                super.say1(name);
            }
        }.say1("jack");/*可以不创建对象直接.say()*/
    }
}
class person{
    public void hi(){
    }
    public void say1(String name){
        System.out.println("haha"+name);
    }
}
  1. 可以直接访问外部类的所有成员,包括私有的
  2. 不能添加访问修饰符,因为它的地位就是一个局部变量
  3. 作用域:仅仅在定义它的方法或代码块
  4. 匿名内部类–访问–>外部类成员
  5. 外部其他类–不能访问–>匿名内部类
  6. 如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问

这篇文章解释的挺清楚的
https://blog.youkuaiyun.com/a850661962/article/details/109642780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值