封装
实质:
Java中的封装的实质就是将类的状态信息(成员变量)、方法等隐藏在类的内部,不允许外补程序直接访问,而是通过该类提供的方法来实现对隐藏信息(成员变量)的操作和访问。在Java中,可以使用访问修饰符来控制类中的数据和方法的访问级别,从而实现封装。
优点
封装反映了事物相对的独立性,有效避免了外部错误对此对象的影响。
- 防止外部直接访问类的内部数据,可以保护数据的安全性。
- 通过限制外部访问,可以更好地控制数据的正确性和完整性。
- 可以隐藏类的实现细节,使得类的永远忽不需要了解类的内部实现细节,只需要知道如何使用类提供的接口。
步骤
-
修改字段的可见性
将访问修饰符修改为private,其他类就无法访问。
-
设置
getter/setter
方法-
常见的
getter/setter
方法规则如下-
Getter方法
命名规则:使用属性名前加上"get"作为方法前缀,属性名的首字母通常大写
返回类型:通常与属性的类型相同
方法体:直接返回属性的值
-
Setter方法
命名规则:使用属性名前加上"set"作为方法前缀,属性名的首字母通常大写
参数:通常只有一参数,参数类型与属性的类型相同
方法体:将传入的参数值赋给属性
-
布尔类型属性的Getter方法
命名规则:使用属性名前加上"is"作为方法前缀,属性名的首字母通常大写
返回类型:通常是布尔类型
方法体:返回属性的值
-
-
-
设置字段的存储限制
可以再setter方法中利用条件判断语句进行赋值限制
意义
封装的主要目的是隐藏类的内部实现细节,防止外部直接访问类的内部数据和方法,从而保证类的安全性和稳定性。优点如下:
- 隐藏类的内部细节,使得类的用户只需要知道如何使用类的接口,而不需要关心类的具体实现细节。这样可以更好地降低类的使用难度,提高代码的可维护性和可读性。
- 通过限制外部访问,可以更好地控制数据的正确性和完整性。通过封装,可以确保类的数据只能被有限的访问者访问和修改,从而避免了意外的数据损坏和数据安全问题。
- 可以更加灵活地修改类的内部实现,而不会影响到类的用户。
- 封装可以提高代码的重用性,通过封装可以将类的内部实现独立出来,形成单独的模块,是得这些模块可以再不同的应用程序中重复使用。
遮蔽
概念
遮蔽指的是在一个作用域中使用了一个和外层作用域相同的变量名,导致内部变量遮蔽了外部变量,即无法直接访问外部变量。
使用
局部变量遮蔽成员变量:当一个方法中的参数或者局部变量和成员变量同名时,方法内部就无法直接访问该数组变量,此时需要使用关键字this来应用当前对象的成员变量。
例如
public class Test {
private int value = 10;
void method(int value) {
// this.value = 20; // 错误,因为value已经被局部变量遮蔽了
this.value += 10; // 正确,可以通过this.value来访问成员变量
}
}
this
-
引用当前对象的成员变量
-
调用当前对象的成员方法
-
调用当前对象的构造方法
只能在有效语句的第一行