搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 达内直播课 > Java的内部类

Java的内部类

达内直播课 2018-05-02
举报
Java的内部类




Java的内部类


顾名思义,内部类就是在内部的类,具体来说是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类主要有以下几类:成员内部类、局部内部类、匿名内部类。


Java的内部类

为什么需要内部类

Java的内部类


其实内部类最大的一个优点就是能独立的继承自一个接口的实现,所以无论外部类是否已经继承了某个接口的实现,对内部类都没有影响。另外内部类可以访问该类所在的作用域的数据,包括私有数据。内部类可以实现多重继承。还可以在你想要定义一个回调函数但是不想太多代码时,使用匿名内部类就可以。下面我们具体看一下内部类的分类:


01
成员内部类


成员内部类是指在一个类中直接定义的内部类,它的特点主要有:

  - 没有使用static修饰的内部类。在成员内部类中不允许出现静态变量和静态方法的声明,static只能用在静态常量的声明上。

  - 成员内部类中可以访问外部类中所有的成员,包括私有成员

例如:

Java的内部类

02
局部内部类


在方法中的内部类称为局部内部类,它的特点是:

  -  局部内部类不能有访问修饰符

  -  它可以访问当前代码块中的常量,和此外部类的所有成员

  - 方法内部类只能在定义该内部类的方法内实例化,不能再此方法外对其实例化 

  - 方法内部类对象不能使用该内部类所在方法的非final局部变量

例如:

Java的内部类

03
匿名内部类


匿名内部类其实就是没有名字的内部类,通常在这些情况下会使用匿名内部类:只用到类的一个实例,类在定义后马上用到,类非常小。


其实例的方式一共有两种:

格式一:

new 类A(){ 方法体  } 

这时候产生的是类A的子类对象。

格式二:

new 接口A(){ 方法体}

这时候产生的是接口A的实现类对象。

匿名内部类在使用时不能有构造方法,但是如果这个匿名内部类继承了一个只含有带参数构造方法的父类,在创建它的对象的时候,在括号里必须带上这些参数。匿名内部类不可以定义任何静态成员和方法。

例如:

Java的内部类



Java的内部类


在面试时,内部类也是面试官问的频率很高的一个模块,所以整理一下,希望可以帮助到大家,如果大家还有什么更好的想法或者需要补充的,可以留言告诉我们,共同探讨,共同进步~







版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Java的内部类》的版权归原作者「达内直播课」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

举报