【Java】 内部类

本文详细介绍了Java中的内部类,包括静态内部类和非静态内部类的区别,如静态内部类可以独立于外部类创建,非静态内部类需要依赖外部类实例。非静态内部类又分为成员内部类、局部内部类(方法内部类)和匿名内部类。局部内部类对外部隐藏,只能在其定义的方法中访问,而匿名内部类通常用于快速实现接口或抽象类的简洁方式。
摘要由CSDN通过智能技术生成

一、内部类分类

1、静态内部类

  • 静态内部类可以有静态成员,非静态内部类不可以

  • 静态内部类可以访问外部类的静态成员,而不可以访问非静态成员

  • 静态内部类的非静态成员可以访问外部类的分静态变量

  • 静态内部类的创建不依赖与外部类,而非静态内部类必须依赖外部类实例

2、非静态内部类

非静态内部类又分为:成员内部类、方法内部类、匿名内部类

1)成员内部类

最常见的内部类。

2)局部内部类(方法内部类)

如果一个内部类只在一个方法中使用到了,那么我们可以将这个类定义在方法内部,这种内部类被称为局部内部类。

  • 局部内部类不允许使用访问修饰符

  • 局部内部类对外完全隐藏,只有创建了这个类的方法可以访问

  • 可以引用成员变量,但必须使用final修饰,内部不允许修改该变量的值(如果是引用类型,只是不允许修改引用地址)

3)匿名内部类

  • 匿名内部类没有访问修饰符

  • 匿名内部类没有构造方法,因为没有名字

  • 匿名内部类必须继承一个抽象类或者实现一个接口

  • 不能存在静态成员和方法

  • 与局部内部类相同,可以引用成员变量,但必须声明为final (在Java8中已经去掉要对final的修饰限制,但其实只要在匿名内部类使用了,该变量还是会自动变为final类型(只能使用,不能赋值)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

博士通

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

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

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

打赏作者

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

抵扣说明:

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

余额充值