Java中的访问控制权限
文章目录
所谓的访问控制权限都有哪些?
Java中共有4个访问权限:
- public (公有的)
- protected (被保护的)
- default(默认的)
- private (私有的)
也叫限定词。
为什么要有访问控制权限?
主要的作用就是用来封装类的,允许哪些东西给用户看到,哪些东西不让用户看到。就像是封装一个手表一样。制作手表的人可以看到手表的内部结构,然后组装好手表,一切工作做好了之后拿给使用手表的人。使用手表的人只想看到手表显示的时间即可,不用关心手表的内部结构,因为没这个必要。我们封装类的时候也是这样的,我们作为程序员,主要工作是将类的内部结构构造好,属性和行为怎么放,哪些东西要放给用户看,哪些东西不给用户看,自己掂量。这个时候访问控制权限的概念就出来了,它定义好了哪个限定词能控制的范围(可见性是多少)。一般在Java开发的时候,private用来修饰属性(数据类型),public修饰行为(方法)。
四个访问控制权限的可见性表
范围 | private | default | protected | public |
---|---|---|---|---|
同包同类 | ✓ | ✓ | ✓ | ✓ |
同包不同类 | ✓ | ✓ | ✓ | |
不同包的子类 | ✓ | ✓ | ||
不同包的非子类 | ✓ |
private
private表示的是私有的,使用private修饰的只能在当前类中访问,其他地方访问不到。private是Java四个访问控制权限里面范围最小的。
在同一个包中
现在两个类都在com.zhong.www下。
源代码:
Private类中:
package com.zhong.www;
public class Private {
private String priStr="Test String";
private void print(){
System.out.println(priStr);
}
}
Test类中:
package com.zhong.www;
public class Test {
public static void main(String[] args){
Private testPri=new Private();
testPri.print();
}
}
运行的时候报错:‘print()’ has private access in ‘com.zhong.www.Private’
原因是print方法是一个私有的private在同包下的不同类是访问不到的。
不在同一个包中
Private类还是上面那个,现在在另一包中新建测试类Test
测试代码:
package com.cukor.www;
import com.zhong.www.Private;
public class Test {
public static void main(String[] args) {
Private testPri=new Private();
testPri.print();
}
}
报错:java: print()可以在com.zhong.www.Private中访问private
在同包下都访问不到,不在同一个包下就更加访问不到了。
在当前类中
private修饰的属性或者行为在当前类中是可以访问的
Private类中:
package com.zhong.www;
public class Private {
private String priStr="Test String";
private void print(){
System.out.println(priStr);