内部类

内部类概念:
内部类就是在一个类的内部再定义一个类,A中定义一个B类,那么B类相对于A类来说就称为内部类,A相对B来说就是被外部类。这两个类是有关联的。比方身体和头。

内部类也会生成一个class文件(独立的字节码文件)
在这里插入图片描述

特点: 内部类可以直接访问外部类的私有成员,而不破坏封装
在这里插入图片描述
可见内部类可以直接调用外部类中的name私有方法

1.成员内部类
在类的内部定义,与实例变量(属性)、实例方法同级别的类。
内部类对象是作为一个外部类的一个实例部分,创建内部类对象时必须依赖外部类对象,所以要先创建外部类对象才能创建内部类对象。
当内部类外部类存在重名属性时,会优先访问内部类属性,要想访问外部的属性name,要用Outer.this.name。更加明确
在这里插入图片描述
右侧是一个测试类,要new出内部类外部类对象,然后调用内部类声明的方法

输出
在这里插入图片描述
在内部类里面不能定义静态成员static,但是可以包含静态成员final,常量
在这里插入图片描述
2.静态内部类(static)

不依赖外部类对象,可以直接创建或通过类名访问,可声明静态成员。
在成员内部类的基础上加一个static
只有静态内部类才可以使用static修饰,别的普通的类是不能用static,比如在外部的类使用static是不行的
在这里插入图片描述
输出
在这里插入图片描述

3.局部内部类

定义在外部类的方法中,作用范围和创建对象范围仅适用于当前方法
在这里插入图片描述
这样什么都输出不出来,因为并没有调用Inner,所以要想执行show2,要在方法内部创建局部内部类对象
在这里插入图片描述
输出
在这里插入图片描述
4.匿名内部类

没有类名的局部内部类,(编译器自动起的名字),特征与局部内部类相同。
必须继承一个父类或实现一个接口。
优点可以减少代码量
缺点可读性较差
在这里插入图片描述
输出
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值