一、概念
JAVA封装,是指利用抽象数据类型将数据和对数据的操作封装成为一个独立实体。内部隐藏,使用对外接口。
一个对象所封装的是自己的属性和方法,不需要依赖其他对象。
二、优点
使用封装的好处:
- 减少耦合
- 类的内部结构可以自由修改
- 对类中成员进行更精确的控制
- 隐藏信息,实现细节
三、代码实例
使用以下两个类来举例,Teacher.java,Student.java
public class Teacher {
/*
* 属性的封装
*/
private String name;
private String sex;
private int age;
private ArrayList<Student> stulist;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public ArrayList<Student> getStulist() {
return stulist;
}
public void setStulist(ArrayList<Student> stulist) {
this.stulist = stulist;
}
}
public class Student {
private String name;
private String sex;
private int age;
private ArrayList<Teacher> tealist;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the sex
*/
public String getSex() {
return sex;
}
/**
* @param sex the sex to set
*/
public void setSex(String sex) {
this.sex = sex;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the tealist
*/
public ArrayList<Teacher> getTealist() {
return tealist;
}
/**
* @param tealist the tealist to set
*/
public void setTealist(ArrayList<Teacher> tealist) {
this.tealist = tealist;
}
}
四、举例
封装将一个对象的属性私有化,必须提供一些可以被外界访问的方法。
举个例子:
房间->对象
墙壁->封装
家具->属性
门窗->接口
利用封装可以很容易的修改类的内部结构,假如你想改变属性的类型,只需要修改声明并在对应该属性的方法即可。
也可以利用这些属性的方法对属性值进行约定。