有无数人在访问修饰符处栽坑,这次就认真的讲解一下如何更准确的记忆这些知识
通常来说,我们犯迷糊的第不是public和private分不清,而是protect和default(缺省)这两个分不清,虽然public和private这两个在工作中用的是最多的,但是公司在面试的时候基本上不考这两个。而是考我们都容易混淆的中间两个。
首先大家先记住这样的访问顺序,首先是同一个类中的访问,然后再是同一个包中的子类来访问,然后是同一个包中的其他类访问,接着是不同包的子类来访问,最后一个就是大家都熟悉的不同包的非子类的访问(这个基本上没记忆的必要了,基本上只要学过Java的,都知道这个点)我们如何记忆这个顺序呢,首先从关联相近程度上我们要知道
同类访问 > 同包的非子类 > 同包的子类访问 > 不同包的子类 > 不同包的非子类
明白了这个我们基本上就把纵轴上的问题解决了,那我么看横轴上的,首先由三个P,中间夹了一个缺省的。3个P首先然我们想起来的是什么? 3P! 对要的就是这个效果,我们从他们的约束级别上就可以知道public肯定是在最左边,private在最右边,而那个处于中间的第三个的位置大家姑且就记成不是3P成员中的那个就行了。这样是不是好记点呢。虽然话有点粗,可是对于一次性记住这个问题还是很有帮助的。
以后在看到这种访问修饰符的问题 ,就想到,纵轴是3P(public ,protected,private)和一个非3P(default),这个跟别人特殊的东西就排在3的位置,然后纵轴顺序依次是同类、同包其他类、同包子类、不同包子类、不同包非子类。把这个图建立起来后就从空行的位置第一行起全部打对勾,然后每换一行,将上一行中最右边是对勾的地方挪下来,改成叉,将剩余地方不动照抄。这样循环往复,挪到底,打到底位置。