java 内部类

  • 概念

在类的内部再定义一个完整的类

内部类编译之后会生成独立的.class文件

内部类可以访问外部类的私有成员,而不破坏封装

可以为外部类提供必要的功能组件

  • 分类

划分规则:内部类定义的位置

成员内部类 、 静态内部类 、 局部内部类 、 匿名内部类

  • 成员内部类 【了解】

外部类的一个成员部分 , 创建内部类对象必须依赖于外部类对象

语法:

Outer outer = new Outer()

Outer.Inner in = outer. new Inner();

访问:

通过this. 访问内部类的成员变量

通过外部类名.this.   访问外部类的成员变量

注意:成员内部类中不能定义静态成员

  • 静态内部类

不需要外部类对象,可以直接创建内部类对象

语法:Outer.Inner in = new Outer.Inner();

静态内部类可以定义静态成员 , 通过外部类名.内部类名.成员  直接访问

语法:Outer.Inner.staticFiled  |   Outer.Inner.staticMethod()

静态内部类中无法直接访问外部类的非静态成员,因为此时外部类可能未创建对象,初始化属性

  • 局部内部类

1、定义在方法内的内部类,有对应的作用范围 ,定一行开始到包含其代码块结束为止【同局部变量】

2、对象的创建和使用要放在局部内部类之后到当前方法结束之前

3、局部内部类使用外部局部变量时,需要为局部变量添加final,目的为了让局部变量生命周期超过对象

4、作用隐藏类内部实现

  • 匿名内部类【常用】

特殊的局部内部类 | 没有名字的局部内部类

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

语法:

new 接口|父类(){

功能实现

}.属性|方法()  ;

匿名内部类将定义类、实现类、创建对象语法合并在一起

缺陷:代码可读性差

好处:保持编程思路通畅

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值