封装的作用有两个:
第一个作用:保证内部结构的安全。
第二个作用:屏蔽复杂,暴露简单。
提高代码的安全性,就是说我只给外界暴露尽可能少的东西,这样对内部是比较安全的,同时也避免了在外部无意的破环,保护了内部的数据
提高代码的复用性。就是说比如在遇到这个问题,我不使用封装,那么解决了这个问题,在下次又遇到的类似的问题还要继续再敲一遍代码吗?所以代码封装以后,我i就再给他一个接口,或者少许的修改一下就可以了
“高内聚”,是指类的内部数据操作细节我们自己完成,不允许外部干涉。我们将内部的细节封装,隐藏起来,这样不仅便于后期内部代码的修改,更是提高了可维护性。
“低耦合”,是指仅需暴露少量的方法给外部使用,尽量方便外部使用。就是说简化外部调用,便有调用者使用,便于扩展和协作。
保证数据安全性(封装可以为别人提供相应的功能,可不为别人显示相应的代码)
提供清晰的对外接口
类内部实现可以任意修改,不影响其他类(可复用性,灵活性,安全性,扩展性 )
对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
一个对象中实列中将复杂的内部细节全部进行封装,只给我们留下简单的接口,通过接口进行调用和操作。
在java中通过4种“访问控制符”分别为private、default、protected、public,实现封装。它们说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。
1. private 表示私有,只有自己类能访问
2. default表示没有修饰符修饰,只有同一个包的类能访问
3. protected表示可以被同一个包的类以及其他包中的子类访问
4. public表示可以被该项目的所有包中的所有类访问
封装的优点:
1. 提高代码的安全性。
2. 提高代码的复用性。
3. “高内聚”:封装细节,便于修改内部代码,提高可维护性。
4. “低耦合”:简化外部调用,便于调用者使用,便于扩展和协作
class Student{
String name;
private int age;
// 写一个方法对数据进行校验
/*
返回这类型:void
参数列表:int a
*/
public void setAge(int a){
if (a<0 || age>120){
System.out.println("你给的年龄有问题");
}else{
age = a;
}
}
// show()方法,显示所有成员变量的值
public void show(){
System.out.println("姓名"+name);
System.out.println("年龄"+age);
}
}
public class App {
public static void main(String[] args) {
// 创建学生对象
Student s = new Student();
s.show();
System.out.println("---------");
// 给成员变量赋值
s.name = "swift";
// s.age = 27;
s.show();
System.out.println("---------");
// 给年龄赋值
// s.age = -27; // 这个数据时不合理的
s.setAge(-27);
s.show();
System.out.println("--------");
}
}