java jdk1.6中。
我在很长时间里对级别访问修饰符都很迷惑。
最后自己测试一番结果与所学的有所出入(可能是版本或其它问题)。
下面是自己测试的一点总结(对其中的名词术语,可能不准确。但所表达的意思应该还是能)。
一:对于类的级别访问修饰符来说,只有public和默认不写两种情况。
public:所有类都可以访问(一定级别的 类的成员变量,下同)。
默认不写:只有在同一个包下的类可以访问。
二:对于类成员来说(可能有的人把static修饰的成员叫做类方法和类变量,我这里就我分了。只叫静态,非静态)
注释:所有类(不管是public或者是private等修饰符修饰的类)他们的成员都能被类自身访问。
1.
对于static类的成员(属性和方法)
1.1 public:允许任何类访问。
1.2 protected:允许本类所在包下的类访问和其它包下的子类访问。
1.3 默认不写:只允许本类所在包下的类访问。
1.4 private:只允许本类访问。
2.对于非static类的成员
2.1 public:允许任何类访问。
2.2 protected:只允许本类所在包下的类访问,注意不允许其它包下的子类访问。
2.3 默认不写:只允许本类所在包下的类访问。
2.4 private:只允许本类访问。
注释:所以对于protected所修饰的成员,静态成员和非静态成员是有区别的。其它修饰符没发现区别。