访问权限修饰符详解(public,private,protected和friendly(默认))
在Java语言中提供了多个作用域修饰符,其中常用的有public,private,protected,final,abstract,static,transient和volatile,这些修饰符有类修饰符,变量修饰符和方法修饰符。本文将只要介绍访问权限修饰符。
在现实生活中,一个公司不同职位的职工,被分配的任务不同,所拥有的权力也不同。想要执行某一操作,必修要先得到执行该操作的权力。一般而言,这对对象也同样适用:没有对象的许可(即对象的属性是私有的),不能直接访问该对象的私有属性。
封装(信息隐藏)是面向对象重要的特性之一,这也是访问权限修饰符存在的目的(实现信息的隐藏)。在编写程序时,有些核心数据往往不希望被用户调用,需要控制这些数据的访问。
对类成员访问的限制时面向对象的一个基础,这有利于防止对象被误用。只允许通过一系列定义完善的方法来访问私有数据,就可以(通过执行范围检查)防止数据赋予不正当的值。例如,类以外的代码不可能直接向一个私有成员赋值。同时,还可以精确地控制如何以及何时使用对象中的数据。
当正确实现对类成员的方法控制后,类就可以创建一个可用的“黑箱”,其内部的动作不会被打开而任意的篡改。
通过访问权限修饰符来限制对对象私有属性的访问,有3个重要好处。
1.防止对封装数据的未授权访问。
2.有助于保证数据的完整性。
3.当类的私有实现细节必须改变时,可以限制发生在整个程序中的“连锁反应”。
访问权限修饰符是一组限定类,属性或方法是否可以被程序里的其他部分访问和调用的修饰符。类的访问控制符只能是空或者public,方法和属性的访问控制符有4个,分别是public,private,protected和friendly,其中friendly是一种没有定义专门的访问控制符的默认情况。访问权限修饰符的权限如表所示:
访问范围 | private | friendly(默认) | protected | public |
---|---|---|---|---|
同一个类 | 可访问 | 可访问 | 可访问 | 可访问 |
同一包中的其他类 | 不可访问 | 可访问 | 可访问 | 可访问 |
不同包中的子类 | 不可访问 | 不可访问 | 可访问 | 可访问 |