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

JAVA herman 58浏览
公告:“业余草”微信公众号提供免费CSDN下载服务,关注业余草微信公众号,添加作者微信:xmtxtt,发送下载链接帮助你免费下载!
本博客日IP超过1300,PV 1800 左右,急需赞助商。
打开支付宝首页搜“567452957”领红包,间接赞助博主,谢谢!

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

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

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

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

内部类的 4 大特点

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

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

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

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

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

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

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » 面试题:链表为什么使用内部类实现?