在Java编程中,我们会经常使用修饰符public、private、protected、default去修饰变量、方法和类,但是它们区别都是怎么样的呢?
访问权限控制:
public:具有最大访问权限。 可以被同一项目下的任何类所调用,一般用于对外的情况。
protected:与public不同的是不同包下的类是不能使用的,但是其子类除外。所以我认为这是特意为子类设计的。
default:它是针对本包设计的,它所修饰的在本包下的其他类都访问。
private:只为类本身提供。是一种封装的体现。
访问权限控制的作用:
1、让客户端程序员无法触及他们不应该触及的一部分数据——这些数据对于数据类型的内部操作是必须的,但并不是解决特定问题所需接口的一部分。隐藏一些实现的细节对于保护数据类型内部脆弱的部分,提高程序的安全性和可用性也是必须的。
2、允许类库的设计者改变其内部的工作方式而不影响客户端程序员。在设计者有更加优化的代码设计方式的时候可以随时改变类的内部结构,而这些对于客户端程序员都是不可见的,他们也无需关心类的实现细节。
我们可以用一个表格更加直观的表示出来展示四种修饰符的访问权限范围:
修饰符 类内部 本包 子类 外部包 public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × ×
区别:
- public:可以被所有其他类所访问。
- private:只能被自己访问和修改。
- protected:自身,子类及同一个包中类可以访问。
- default(默认):同一包中的类可以访问,声明时没有加修饰符,认为是friendly。