了解了包的概念,就可以系统的介绍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