使用getter和setter的优点是什么 - 只能获取和设置 - 而不是简单地使用公共字段来存储这些变量?
如果getter和setter做的不仅仅是简单的get/set,我可以非常快地解决这个问题,但我并不是100%清楚如何:
public String foo;
Run Code Online (Sandbox Code Playgroud)
更糟糕的是:
private String foo;
public void setFoo(String foo) { this.foo = foo; }
public String getFoo() { return foo; }
Run Code Online (Sandbox Code Playgroud)
而前者需要很少的样板代码.
搜索提出了一个简单的定义:数据隐藏.
但是,请考虑以下两个示例:
1)第一个例子:
Class Employee
{
public int age;
}
Run Code Online (Sandbox Code Playgroud)
2)第二个例子:
Class Employee
{
private int age;
public int getAge(){return age;}
}
Run Code Online (Sandbox Code Playgroud)
问题:
在上述两个示例中,没有数据隐藏,age要么被其他人修改,要么被其他人查看.数据隐藏在哪里?封装如何帮助上面的例子?