日期:2014-05-20  浏览次数:20661 次

咱来复习一下_protected不能修饰顶级类
关于这个问题刚翻出了2天前一个未结帖,因没结果不贴链接全文摘抄:
HTML code

renyuanchunby
(renyuanchunby)
等 级:
结帖率:50.00%
发表于:2011-11-08 08:56:12
顶级类不能使用private 和protected 修饰,因为顶级类既不处于任何类的内部,也就没有其外部类的子类了,因此private 和protected的访问控制符对顶级类没有意义.
对以上的protected为什么不能修饰顶级类的解释不理解,请高手指点!


刚在书上看到这么一段,有点疑问,避免广告嫌疑及断章取义,完整段落如下:
XML code

对于顶级类而言,它也可使用访问控制符修饰,但顶级类只能有两种访问控制级别:public和默认,顶级类不能使用private和protected修饰,因为[color=#FF0000]顶级类既不处于任何类内部,也就没有其外部类的子类了[/color],因此private和protected访问控制符对顶级类没有意义


顶级类可以没有访问控制符,却不能用protected修饰;protected与default访问控制权限区别是前者修饰成员可被不同包中子类访问。那就是说这句中的“不同包中子类”对应于上文中的“外部类的子类”,请问是不是这样的呢?
如果是这样的话,那包com中的顶级类com.A.java 的不应该有的“外部类的子类”是不是就是因为A.java是顶级类而造成的不应该存在的包com以外的类,比如org.bbk.N.java呢?而如果com.A.java不是顶级类的话,org.bbk.N.java就可以存在了
以上是我的理解,但又觉得欠妥,因为什么叫顶级类我根本就不确定。有些介绍内部类的地方提到顶级类,结果就是顶级类常常和内部类,非静态内部类 及前三者的静态,非静态成员之间关系的介绍中一起出现,造成我不确定是不是误解的一种理解:顶级类是相对于这个类内部成员而言的

------解决方案--------------------
哎没人吗
------解决方案--------------------
他的解释还是有一定道理的~
------解决方案--------------------
没人回就注册个新号拿分
------解决方案--------------------
再来个号 拿分ing
------解决方案--------------------
探讨

染色失败的一句,补上
顶级类既不处于任何类内部,也就没有其外部类的子类了

------解决方案--------------------
这个问题。