我在学习Java时偶然发现了Encapsulation。根据{{3}},使用Getters和Setter的好处之一是:
“类的用户不知道类如何存储其数据。类可以更改字段的数据类型,类的用户不需要更改任何代码。”
但我不太清楚这是什么意思。这是否意味着:
private String name;
可以更改为:
private int name; ?
如果有人可以举一个例子,我将不胜感激。
答案 0 :(得分:0)
是的,例如,如果只有固定数量的可能名称,那么该类可能会改变:
class Thing
{
private String m_name;
....
public String getName()
{
return m_name;
}
...
}
到
class Thing
{
private static String[] POSSIBLE_NAMES = ...
private int m_nameIndex;
....
public String getName()
{
return POSSIBLE_NAMES[m_nameIndex];
}
...
}
关键是getter指示对象有一个名字,并且可以在你问的时候告诉你,但是对象可以自由地存储或计算它喜欢的名字。
答案 1 :(得分:0)
类可以更改字段的数据类型
我认为这是错误的。当我们使用仅对类可见变量的私有访问修饰符时,不会将数据类型化为访问修饰符。公共方法是来自外部Java世界的此类字段的访问点。通常,这些方法称为getter和setter。因此,任何想要访问变量的类都应该通过这些getter和setter访问它们。不需要将private String name;
更改为public String name;