Java中的四种常用内部类

内部类

  1. 成员内部类

一个类可以定义在另外一个类的内部,定义在类内部的类称之为Inner,其所在的类称之为Outer;

Inner定义在Outer的内部,通常只服务于Outer,对外部不具备可见性,Inner可以直接调用Outer的成员及方法包括私有的)。要注意的是,成员内部类不能含有static的变量和方法。原理是:因为成员内部类需要先创建了外部类,才能创建它自己的。

一般情况下,Inner对象会在Outer对象中创建(构造方法或其他方法);Inner对象中会有一个隐式的引用指向创建它的Outer类对象。

关于成员内部类的几种创建方式:

  • Innerclass innerclass = this.new Innerclass();——在外部类中创建对象
  • Outerclass.Innerclass = (new Outerclass()).new Innerclass();——在外部类之外,用外部类的对象创建其内部类的对象
  1. 局部内部类

局部内部类,是指内部类定义在方法和作用域内,只在该方法或条件的作用域内才能使用,退出这些作用域后无法引用的。(生命周期与方法和域等同)

  1. 静态内部类

静态内部类,就是修饰为static的内部类。声明为static的内部类,直接引用outer.inner,即不需要创建外部类,也不需要创建内部类。静态内部类可以有static数据和static属性,普通内部类不行。同时,静态内部类也可以有非静态的成员,这个时候静态内部类可以看做为一个成员内部类,可以创建实例。

静态内部类特殊在他内部声明为静态是成员,在其他类中,只能通过外部类名.内部类名.成员名来引用,是不能通过外部类的对象.内部类名.成员名引用的。

静态类内部不能访问外部的非静态成员,但是可以创建外部类的实例,就和普通的静态方法一样。

  1. 匿名内部类

如果在一段程序中需要创建一个类的对象(通常这个类需要实现某个接口或者继承某个类),而且这个对象创建后,这个类的价值也就不存在了,这个类可以不必命名,称之为匿名内部类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值