📅  最后修改于: 2020-03-19 01:28:55             🧑  作者: Mango
封装的定义是将数据包装在单个单元下。它是将代码及其所处理的数据绑定在一起的机制。考虑封装的另一种方法是,它是一种保护性屏蔽,可防止数据被此屏蔽之外的代码访问。
// Java展示封装
public class Encapsulate
{
// private变量,这些只能被类的public方法访问
private String mangoName;
private int mangoRoll;
private int mangoAge;
// get方法
// private variable mangoAge
public int getAge()
{
return mangoAge;
}
// get方法
public String getName()
{
return mangoName;
}
// get方法
public int getRoll()
{
return mangoRoll;
}
// set方法
public void setAge( int newAge)
{
mangoAge = newAge;
}
// se方法
public void setName(String newName)
{
mangoName = newName;
}
// set方法
public void setRoll( int newRoll)
{
mangoRoll = newRoll;
}
}
在上面的程序中,由于变量被声明为私有,因此封装了EncapsulateDemo类。将getAge(),getName(),getRoll()之类的get方法设置为public,这些方法用于访问这些变量。诸如setName(),setAge(),setRoll()之类的setter方法也被声明为public,用于设置变量的值。
下面显示了访问EncapsulateDemo类的变量的程序:
public class TestEncapsulation
{
public static void main (String[] args)
{
Encapsulate obj = new Encapsulate();
// 设置变量的值
obj.setName("Logan");
obj.setAge(19);
obj.setRoll(51);
// 打印
System.out.println("芒果's name: " + obj.getName());
System.out.println("芒果's age: " + obj.getAge());
System.out.println("芒果's roll: " + obj.getRoll());
// 直接访问 芒果Roll是不可行的,因为有封装
// System.out.println("芒果's roll: " + obj.mangoName);
}
}
输出:
芒果's name: Logan
芒果's age: 19
芒果's roll: 51
封装的优点: