非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本来就是把一些概念绕来绕去了的。。每看一便都会有不同的感觉。。。。。
很容易理解,方法的访问级别不可能会比类的访问级别还大啊。就像你家里的电视机就只可以你用,把时代推前一点也就摆在客厅里,但也是把人请回家里看。也就是说还是呆在自己的空间里的。内部的东西再大也不能大于类的本身的访问级别。
个人认为这贴结了吧。。有点浪费时间的感觉。