您的问题很有趣。我将尽力为您解答。
封装 背后的主要思想 是向 其他用户 隐藏数据及其实现 细节。如果我们将数据成员设为 私有
,则只能在同一类中访问它。没有其他类可以直接访问该数据。
但是我们可以定义一个接口,即公共getter和setter方法来更新其他类中的数据。这样可以确保 私有数据 对其他人 仍然不可访问
,并且只能由您提供的公共方法访问。
例如,您可能决定只为特定数据成员提供getter方法,而不提供setter方法。
这样可以确保其他任何类都无法以任何可能的方式更改或更新您的数据成员。他们只有在希望使用getter方法时才能获取值。
这就是为什么封装也称为 数据隐藏的原因 。
例
public class EncapsulationDemo{ private int ssn; private String empName; private int empAge; //Getter and Setter methods public int getEmpSSN(){ return ssn; } public String getEmpName(){ return empName; } public int getEmpAge(){ return empAge; } public void setEmpAge(int newValue){ empAge = newValue; } public void setEmpName(String newValue){ empName = newValue; } public void setEmpSSN(int newValue){ ssn = newValue; }}public class EncapsTest{ public static void main(String args[]){ EncapsulationDemo obj = new EncapsulationDemo(); obj.setEmpName("Mario"); obj.setEmpAge(32); obj.setEmpSSN(112233); System.out.println("Employee Name: " + obj.getEmpName()); System.out.println("Employee SSN: " + obj.getEmpSSN()); System.out.println("Employee Age: " + obj.getEmpAge()); } }优点
1)它为代码提供了 灵活性 ,并使其 易于维护。
我们可以更改
getEmpName()或
setEmpName()不影响任何其他外部代码的实现。
2)我们可以随时使数据成员为 只读 (仅定义getter)或 仅写 (仅定义setter)。
3)其他用户将不知道 幕后情况 。他们只会知道,要更新数据,我们需要调用settter方法并获取数据,而我们需要调用getter方法。



