对Java中内部类的理解

内部类可以分为以下四种:


        一、成员内部类:

        以成员的级别进行声明,可以使用各种访问权限修饰符:public 、protected、 private或缺省 (default),而普通的类只能使用public 或缺省(default)。成员内部类不能在其他类中直接创建,只能在创建出外部类的对象后再创建内部类。



        二、局部内部类:

        与局部变量类似,在方法中声明,不能用访问权限修饰符修饰,同时遵循代码的先后顺序。需要注意的是,局部内部类不能直接访问局部变量,和方法的参数。

        因为局部变量和方法参数的生命周期非常短,而局部内部类的对象的生命周期则不一定。局部内部类的对象创建出来后,持有该变量,且该对象不一定随局部变量的销毁而销毁。这就需要这个对象持有的变量拥有较长的生命周期。

        如果需要访问局部变量或方法的参数,可以将局部变量或方法参数用final修饰,延长其生命周期。而如果遇到需要改动局部变量或方法参数的值的情况,用final修饰显然不合适。此时可以将其提升为全局变量,延长其声明周期。



        三、静态(成员)内部类:
        使用static修饰的内部类。static一般只用来修饰类的属性和方法,这些都属于成员,所以可以称静态内部类为静态成员内部类。静态内部类可以在任何位置创建,但静态内部类不能直接访问非static的成员。因为static修饰的成员会优先放入内存。



         四、匿名内部类:

         没有类的名称,直接创建出已知类的子类对象或直接实现已知的接口。匿名内部类通常在方法中直接通过new关键字创建,与局部内部类类似。

 
        这四种内部类,除静态内部类没有明显的区分,在符合语法规则的前提下可以任意使用。使用局部内部类或匿名内部类可能导致代码中的括号较多,所以在代码量较大时,可以优先考虑使用成员内部类。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值