JAVA的内部类

JAVA的内部类

内部类总共拆分为以下几个类型:

​ 1.成员内部类

​ 2.局部内部类

​ 3.匿名内部类

​ 4.静态内部类

内部类主要运用,编写监听事件。

成员内部类

成员内部类是最普通的内部类,它定义在另一个类的内部。
不过要注意的是,当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员(内部类中访问内部类成员变量)。如果要访问外部类的同名成员,需要使用this。

内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。

​ 1.如果成员内部类Inner用private修饰。则只能在外部类的内部访问。

​ 2.如果用public修饰,则任何地方访问。

​ 3.如果用protected修饰,则只能在同一个包下或者继承外部类的情况下访问。

​ 4如果是默认权限,则只能在同一个包下访问。

注意:
​ 成员内部类中不能出现static修饰符,也就是不能使用static修饰成员方法和变量。

局部内部类

局部内部类是定义在一个方法或者在一个作用域里面的类,它和成员内部类区别在于局部内部类的访问权限限于方法内或者该作用域内。

  1. 局部内部类就像是方法里面的一个局部变量一样,是不能使用 publicprotectedprivate以及static修饰符的;
  2. 局部内部类中的成员变量和方法,都不能使用static关键字进行修饰

静态内部类

静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static,静态内部类是不需要依赖外部类,这点和类的静态成员相似,并且它不能使用外类的非static成员方法和成员变量,因为没有外部类的对象情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生了矛盾,因为外部类的非static成员必须依附具体的对象。

匿名内部类(常用)

没有名字的内部类,在编写事件监听的代码时,使用匿名内部类比较方便,便于维护。

使用匿名内部类:因为接口和抽象类不能被实例化对象。

使用匿名内部类的方式构造接口、实例化对象(只要是抽象的,不管是抽象类还是接口,都可以通过匿名内部类方式访问)

情况一:

​ 接口和抽象类的使用:相当于不用特意写个类去实现这个接口方法,直接在实例化的时候就写好这个方法。

情况二:

​ 抽象类用匿名内部类:当接口作为参数放在方法体里的时候,用new 接口()的方式来实例对象,则匿名必须实现两个方法。

内部类使用场景

  1. 每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个接口的实现,对于内部类来说都没有影响。内部类使得多继承的解决方案变得完整。
  2. 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏。
  3. 方便编写事件驱动程序。
  4. 方便编写线程代码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张天靖09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值