了解了包的概念,就可以系统的介绍Java中的访问控制级别。在Java中,针对类、成员方法和属性提供了四种访问级别,分别是private、default、protected和public。
public(公共) | protected(受保护) | default(缺省) | private(私有) | |
同一个类 | √ | √ | √ | √ |
同一个包 | √ | √ | √ | × |
子父类 | √ | √ | × | × |
不同包 | √ | × | × | × |
public 和 private 在这里我就不一一介绍了,想必大家比我还熟悉了吧。
还有protected和default 在同一个类中 我也不验证了(因为最小权限的private都可以在同一个类中互相访问,这两个也肯定可以了)
验证protected修饰的属性 在同一个包能不能被访问。:
package d;
class Demo7 {
protected int a = 1 ;
}
package d;
public class Demo8 {
public static void main(String[] args) {
Demo7 z = new Demo7();
System.out.println("a="+z.a);
}
}
运行结果:
能访问的到!
验证default(缺省)修饰的属性 在同一个包能不能被访问。:
package d;
class Demo7 {
int a = 1 ;
}
package d;
public class Demo8 {
public static void main(String[] args) {
Demo7 z = new Demo7();
System.out.println("a="+z.a);
}
}
运行结果:
能访问的到!
验证protected修饰的属性 在子父类中能不能被访问。:
package d;
class Demo7 {
protected int a = 1 ;
}
package d;
public class Demo8 extends Demo7 {
public static void main(String[] args) {
Demo8 z = new Demo8();
System.out.println("a="+z.a);
}
}
运行结果:
能访问的到!
验证default(缺省)修饰的属性 在子父类中能不能被访问。:
package d;
class Demo7 {
int a = 1 ;
}
package e;
import d.*;
public class Demo8 extends Demo7 {
public static void main(String[] args) {
Demo8 z = new Demo8();
System.out.println("a="+z.a);
}
}
运行结果:
不能访问的到!
验证protected修饰的属性 在不同包中能不能被访问。:
package d;
class Demo7 {
protected int a = 1 ;
}
package e;
import d.*;
public class Demo8{
public static void main(String[] args) {
Demo7 z = new Demo7();
System.out.println("a="+z.a);
}
}
运行结果:
不能访问的到!
验证default(缺省)修饰的属性 在不同包中能不能被访问。:
package d;
class Demo7 {
int a = 1 ;
}
package e;
import d.*;
public class Demo8{
public static void main(String[] args) {
Demo7 z = new Demo7();
System.out.println("a="+z.a);
}
}
运行结果:
不能访问的到!
交流企鹅:654249738,和自学者交流群:517284938