首页 理论教育 Java程序设计:类的访问控制及权限修饰符

Java程序设计:类的访问控制及权限修饰符

时间:2023-11-01 理论教育 版权反馈
【摘要】:表3-1访问权限修饰符的作用范围4种访问权限修饰符说明如下:1.private修饰符private修饰符表示私有的访问权限,由private限定的类的成员只能被自己所属的类访问,在这个类的主体之外是无法访问的。使用private修饰符的目的主要是隐藏类的实现细节和保护类的数据。使用protected修饰符表示受保护的访问修饰符。

Java程序设计:类的访问控制及权限修饰符

在Java中,可以使用访问权限修饰符来保护类、类的变量和方法。访问权限修饰符根据访问权限由小到大的顺序分别为private、缺省、protected和public。访问权限修饰符的作用范围如表3-1所示。

表3-1 访问权限修饰符的作用范围

4种访问权限修饰符说明如下:

1.private修饰符

private修饰符表示私有的访问权限,由private限定的类的成员只能被自己所属的类访问,在这个类的主体之外是无法访问的。使用private修饰符的目的主要是隐藏类的实现细节和保护类的数据。private修饰符不能修饰类(除了内部类)和接口

例如MyCircle5类(见图3-19)中的构造方法、setter和getter、成员方法等都能访问private修饰的成员属性。在同一个包下的My Circle5Test测试类(见图3-20)中,程序第6行“c.radius=-2.5;”就是在My Circle5Test类中访问包中另一个MyCircle5类中private修饰的radius变量,编译报错。

2.缺省修饰符(www.xing528.com)

如果类、方法和属性前没有使用任何访问权限修饰符,则为默认访问权限,也称为包访问权限,因为它们可以被这个类本身或者与该类在同一个包中的其他类访问。缺省修饰符既适用于类,也适用于类的成员。

再来看下MyCircle3类(见图3-13),静态成员变量instancesCount没有任何访问权限修饰符修饰,除了可以被本类的构造方法和成员方法访问外,还可以被同一个包下的MyCircle3Test类(见图3-14)访问,程序第6行中“My Circle3.instancesCount”编译通过。

可以动手验证下,在项目chapter3的src下新建一个包cn.linaw.chapter3.demo02,将MyCircle3Test类复制到该包下,那么编译器首先提示需要导入包“import cn.linaw.chapter3.demo01.MyCircle3;”,导入包后,发现main方法中语句“System.out.println("常量PI="+MyCircle3.PI);”和语句“System.out.println("创建对象前,instancesCount="+MyCircle3.instancesCount);”编译通不过,因为MyCircle3Test类和MyCircle3类在不同包下,MyCircle3Test类无法访问MyCircle3里具有包访问权限的成员变量PI和instancesCount。

3.protected修饰符

protected修饰符需要学完继承后才能完全理解。使用protected修饰符表示受保护的访问修饰符。类的成员被protected修饰符修饰后,这些成员可以被这个类本身、与该类处于同一个包中的其他类,以及该类的子类(无论是否在同一个包下)访问,但是不允许不同包下的非子类访问。同private一样,protected修饰符不能修饰类(除了内部类)和接口。

4.public修饰符

在类、成员方法和成员属性前使用public修饰符,意味着它们没有受到限制,可以被任何类访问。public修饰符拥有最大的访问权限,和缺省修饰符一样,适用于类和类的成员。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈