封装的概念
是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,并尽可能地隐藏内部的细节,只保留一些对外接口使其与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权出去的操作来与这个封装的对象进行交互。
即:用户无需知道某对象内部的细节,却可以通过该对象对外提供的接口来访问该对象。
对于封装而言,一个对象它所封装的是自己的属性和方法,所以它无需依赖其他对象就可以完成自己的操作。
在设置变量的属性时,通常会对数据进行封装。这样可以增加数据访问限制,增加程序可维护性。而实现方法就是:用private去修饰一个变量,用setter()方法去设置该变量的值,用getter()方法去调用该变量的值
-
public class Student{
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public static void main(String agrs[]){
Student st=new Student();
st.setName(“小明”);
System.out.println(“姓名为:”+st.getName());
}
}
封装的优点
- 良好的封装能够减少耦合。
- 实现专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,从而实现专业的分工。
- 可以灵活的修改类内部的结构以适应新的要求。
例如:
public class Son{
private int age ;
}
不使用封装,如果要改变类中某属性的类型(int改为String),则需要修改每一条使用了该类的客户代码(所有Son.age=数字,改为Son.age=字符串);而使用封装,则只需修改类的内部实现。
public class Son{
private int age ;
public void setAge(int age) {
this.age = age;
}
}中的setAge()方法,改为
public void setAge(int age) {
this.age = String.valueOf(age);
} - 可以对成员进行更精确的控制。
为方法的入口和出口加入限制条件
- 对其他对象隐藏内部实现细节。