-
封装将数据和操作连接起来。封装的一个重要属性:访问控制。
-
通过封装可以控制程序的某个部分所能访问类的成员,防止对象滥用。从而保护对象中数据的完整性。
-
在Java中类的每个成员(数据成员和成员方法)都有一个成为可访问性的属性,用来保护类成员。
Java中有四类成员的保护方式:private(私有的)、protected(保护的)、public(共有的)default(包访问权限)。
1.private 实现封装(私有的)
(最严格) 只能被这个类本身访问,其他情况如同一包内的类、子类等都无法访问。
- 将属性,方法用private封装后表示,被封装的属性与方法只能在本类中使用,类外部不可见。 此时要想访问被封装的属性,必须提供getter 与 setter 方法. 不能用于外部类(最顶层的类),可以用于内部类的嵌套。
- getter方法:主要进行属性内容的取得。public void setName(string n) 对name的set方法。
- setter方法:主要进行属性内容的设置与修改。
- 类的设计原则:编写类的时候,没有额外说明,所有属性必须使用private封装(成员变量)
2.protected(保护的):
同一包内的类以及其子类可以访问。
这里需要说明,包内的类(其他类和子类);子类(包内的和包外的),所以同一包内的类和子类其实是有交集的——包内的子类。
3.public(公共的):
(最不严格),任何类都可以访问该成员。
4.default(缺省的):
类中不加任何访问权限限定的成员属于缺省的访问状态。
可以被这个类本身以及同一个包中的类访问。
包内的类包括其子类,但是包外的类一律无法访问。
访问权限修饰符总结表:
修饰符 | 同一个类 | 同一个包 | 子类 | 所有类 |
---|---|---|---|---|
public | 允许访问 | 允许访问 | 允许访问 | 允许访问 |
protected | 允许访问 | 允许访问 | 允许访问 | – |
default | 允许访问 | 允许访问 | – | – |
private | 允许访问 | – | – | – |