Java 内部类

一、概念

是什么

所谓内部类就是在一个类的内部嵌套其他类结构

为什么使用内部类

1、内部类可以访问该类定义所在操作域的所有数据

2、内部类可以对该包下的其他类隐藏

3、内部类拥有类的基本特征,使用内部类继承某个具体的或抽象的类。可以在某种程度上解决单继承的缺陷。

 内部类和外部类的关系

1、内部类可以直接访问外部类的属性(静态类只能访问静态属性)

2、外部类可以使用类名.  或者 通过内部类对象访问

3、成员内部类和静态内部类可以被任意修饰符修饰。方法内部类和匿名内部类,不能被修饰符修饰。

二、内部类划分

一般内部类划分的类型

1、成员内部类

2、静态内部类

3、方法内部类(局部内部类)

4、匿名内部类

1、成员内部类

定义在类内部的类,与类的方法,属性属于同一级别的,即也是外部类的成员。

注:

成员内部类中不能存在任何static成员与方法。(jdk17 以上才支持

可以被任意修饰符修饰。

2、静态内部类

静态内部类是用static修饰的内部类 。

注:

静态内部类不可以使用外部类中的任何非静态属性和方法。

可以被任意修饰符修饰。

 

3、方法内部类

方法内部类是定义在外部类的方法中,和成员内部类基本一致,只是作用域不用。

  • 方法内部类不允许使用权限修饰符,public、protected、private均不允许
  • 方法内部类对外完全隐藏,除了创建这个类的方法可以访问外,别的都不可以访问
  • 可以直接访问方法内的局部变量和参数。【存在限制,需要 final 或有效的final修饰的】,但是不能更改。 
  • 无法创建静态变量和静态方法

4、匿名内部类

 Java匿名内部类是一种特殊的内部类,它没有类名,直接在创建对象时定义并实现。通常用于创建只需要使用一次的类对象,可以简化代码,提高代码的可读性和可维护性。

  • 匿名内部类必须继承一个抽象类或者实现一个接口
  • 匿名内部类没有构造方法,因为他没有类名。
  • 匿名内部类没有访问修饰符
  • 匿名内部类中不能存在任何静态成员或方法
  • 与局部内部相同,匿名内部类也可以引用方法形参,此形参也必须声明为final
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值