今天我突然发现我分不清default和友好的是不是一个东西,default是不是默认的。
最后我得出的结论是:default不是访问权限,只是关键字!!
原因一:
我想起了构造方法的四个访问权限分别是public、protected、private和友好的;然后我就试验了一下用default去修饰构造方法,代码如下图,答案是不行的。
那在这我先得出的结论是:友好的=默认的 != default
友好的和默认的就是什么修饰符都不加。
原因二:
default从我学习Java以来就只见到过它出现在接口和switch中。首先,很明显在switch中它表示的不是访问权限;然后是在接口中,我本以为它是访问权限,但我又想起我同时使用过public和default去修饰接口里的方法,代码如下图:
那很明显这里的访问权限是public,而default在这仍然不是访问权限,它只是让接口实现了这个方法。
原因三:
在百度查到的第一条结论就是default是包访问权限,其实我写这篇博客还是挺慌的,我竟然在推翻百度,那我们就来推翻一下吧!
OMG!我竟不知道怎么推翻,default又不能修饰类也不能修饰方法的(接口里的方法可以),我两个不同的包都准备好了,结果还没开始就结束了。。。
那么我愤怒的结论就是:连类和方法都无法修饰算什么访问权限!
原因四:
各种教材上从未说过default是访问权限!实在是离了个大谱,为什么大家会出现了这样统一的错误认知。。
首先是我在书上找到的友好类和友好方法,以及访问权限的简单概况
从以上四张图来看,我都没有看到有关default的任何蛛丝马迹。
那我们再来找找default出现在接口的地方的描述,看下图:
第三行和最后一行对default的描述都只是关键字!更重要的是第四行的后一半:default的实例方法的访问权限必须是public,这还不明显吗!?
最后说一下:希望大家自己去思考一下这个问题,我的学习经历很浅,而我在网上查阅到的都是说default是访问权限的(书上形容default说的是关键字,这确实让人头大)。我不知道什么原因出现了default是访问权限这样统一的认知(我的室友告诉我可能因为它是缺省的英文,那确实还是有点离谱),不过我还是更相信自己验证出来的东西,我也希望你们的答案也是自己验证出来的。究竟是不是,也只能看你自己的理解,多把自己的想法敲出来。你看了我的博客,也一定看到了别的大佬的博客,那么这些不同的思路和想法只能靠你自己慢慢消化了。如果有不同的见解也希望可以和我分享一下呀!