前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题:链表为什么使用内部类实现?

面试题:链表为什么使用内部类实现?

作者头像
业余草
发布2019-05-10 11:28:44
7530
发布2019-05-10 11:28:44
举报
文章被收录于专栏:业余草业余草

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1423610

最近推广了一个关于面试的活动。我看了一下章节,其中有一个面试题是说什么是内部类?内部类的特点是什么?

看到这个题,我突然想到,工作这么多年,对内部类的关注一直都比较少。于是,在一次面试的机会中,我问了一个号称有 10 年工作经验的程序员:“链表为什么使用内部类实现?”

他支支吾吾,半天没有解释清楚为什么?于是,我百度搜索了很久,只发现阿里云上有一个免费的课程提到了“链表为什么使用内部类实现?”

但是这个解释非常的短,也非常的含蓄。所以,本文就根据我自己的工作经验来说说,链表为什么使用内部类实现?

说实话,Java 中使用链表的地方还是蛮多的,但是为什么不把链表单独抽取出来作为一个类,使用的地方组合或者继承一下呢?

要解释这个问题,我们先来看一看内部类的特点。

第一个特点,内部类可以访问其所在类的私有属性和方法。这一点就很像孕妈妈肚里的小宝宝一样,可以很方便的吸收一些妈妈的营养。以 HashMap 为例,它里面有好几个内部类。观察这几个内部类你会发现有一个共同特点就是内部类可以很方便的访问所在外部类的一些私有属性和方法。如果你把链表给抽取出来,你会发现,最终的链表实现起来难了很多。

第二个特点,内部类可以隐藏起来,不被同一个包中的其他类访问,如果一个类只对某个类提供使用,那么可以将其定义为内部类。这个特点在 HashMap 等集合中也有体现,具体来说就是各个内部类都是辅助所在的外部类的。作为外部类的一部分,具有强关联性。并且不希望除了所属的外部类使用外的其他类进行访问。

第三个特点,可以联合外部类解决多继承问题。这也是我认为非常重要的一个特点。还是以 HashMap 为例,它本身继承了 AbstractMap。但是它的所有内部类,都又有了各自的继承。

关于链表为什么使用内部类实现?我就通过以上 3 点来解释。其中最重要的我认为是第 3 点。以上,希望能够帮助到大家,如果有更好的观点,请留言评论,谢谢!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档