封装的目的:
(1)隐藏类的实现细节。
(2)让使用者只能通过事先预定的方法访问数据,从而可以在该方法中加入控制逻辑,限制对属性的不合理访问。
(3)可进行数据检查,从而有利于保证对象信息的完整性。
(4)便于修改,提高代码的可维护性。
实现良好的封装,需要从以下两个方面考虑:
(1)隐藏对象的属性和实现细节,不允许外部直接访问。
(2)暴露出方法,让方法控制对这些属性进行安全的访问和操作。
因此,封装实际上有两个方面的含义:**隐藏该隐藏的,暴露该暴露的。**这两个方面都需要通过使用Java提供的访问控制符来实现。
Java的访问控制级别从小到大如下图所示:
各访问权限的访问级别如下表所示:
访问修饰符 | 同一个类中 | 同一个包中 | 子类中 | 所有类中 |
---|---|---|---|---|
private | V | |||
default | V | V | ||
protected | V | V | V | |
public | V | V | V | V |
通过上述关于访问控制符的介绍,可知访问控制符用于控制一个类的成员是否可以被其他类访问。对于局部变量而言,其作用域就是其所在的方法,因此不可能被其他类访问,因此不能使用访问控制符修饰。
访问控制符的用法如下:
Public class demo{
Private int PrValue; //只有在类中才能访问到
Default int DeValue; //在同个类和包中都能访问到
Protected int PtValue; //在类和包、子类中才能访问到
Public int PbValue; //访问权限最高,都能访问到
}
static关键字
static表示一个类的成员变量,即静态成员变量。
语法如下:
[<修饰符>] [static] [final] <变量类型> <变量名>