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

非public类的static变量的访问问题
在TIJ中有一段:As   previously   mentioned,   if   you   don’t   put   an   access   specifier   for   class   access,   it   defaults   to   package   access.   This   means   that   an   object   of   that   class   can   be   created   by   any   other   class   in   the   package,   but   not   outside   the   package.   (Remember,   all   the   files   within   the   same   directory   that   don’t   have   explicit   package   declarations   are   implicitly   part   of   the   default   package   for   that   directory.)   However,   if   a   static   member   of   that   class   is   public,   the   client   programmer   can   still   access   that   static   member   even   though   they   cannot   create   an   object   of   that   class.

但是我在package1中定义了一个非public类Class1,其中有一个public   static的int变量t,然后在package2中定义一个public类Class2,通过**.package1.Class1.t来访问前一个package中的public静态变量,编译时不通过,报错“The   type   ×××   is   not   visible”,这是为何?

------解决方案--------------------
定义类时 什么修饰符都不加 那么它默认的是 default 只有它本省的类和在同一个包的类里
可以访问它。

访问修饰符 :
1.private:只对本类可见
2.默认(default):不需要修饰符,对本包可见(包访问权限)
3.protected:对所有子类和本包可见
4.public:对一切可见



------解决方案--------------------
还是那句话,尽信书不如无书。。。。
最少偶看这个地方的时候没发现什么问题,是我的懒得深层次理解呢还是偶理解能力快呢。。
总之是不觉得这里有问题。
TIJ本来就是把一些概念绕来绕去了的。。每看一便都会有不同的感觉。。。。。
很容易理解,方法的访问级别不可能会比类的访问级别还大啊。就像你家里的电视机就只可以你用,把时代推前一点也就摆在客厅里,但也是把人请回家里看。也就是说还是呆在自己的空间里的。内部的东西再大也不能大于类的本身的访问级别。
个人认为这贴结了吧。。有点浪费时间的感觉。