Java - 使用Getters&amp ;;时更改数据类型塞特斯

时间:2016-11-25 17:43:06

标签: setter getter

我在学习Java时偶然发现了Encapsulation。根据{{​​3}},使用Getters和Setter的好处之一是:

“类的用户不知道类如何存储其数据。类可以更改字段的数据类型,类的用户不需要更改任何代码。”

但我不太清楚这是什么意思。这是否意味着:

private String name; 

可以更改为:

private int name; ?

如果有人可以举一个例子,我将不胜感激。

2 个答案:

答案 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;