2016-11-25 81 views
1

在学习Java时偶然发现了Encapsulation。对使用getter和setter的利益,根据https://www.tutorialspoint.com/java/java_encapsulation.htm是:Java - 使用Getters&Setters时更改数据类型

“一类的用户不知道这个类是如何存储数据的类可以改变一个字段和用户的数据类型。类不需要改变他们的任何代码。“

但我不太确定这是什么意思。这是否意味着一个:

private String name; 

可以改为:

private int name; ? 

我会很感激,如果有人可以给关于向这样的一个例子。

+0

你的意思是,如果用户输入整数值,而不是字符串会发生什么事的任何类? – SMW

+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]; 
    } 
    ... 
} 

的一点是,在吸气表明,该对象有一个名称,并可以在您询问时告诉您,但该对象可以自由存储或计算该名称,但它喜欢。

+0

感谢您的示例。但我对Java仍然陌生,并不太了解它。所以你可以添加另一个变量并改变getter内部的任何变量? –

+0

你可以在吸气剂中做任何你想要的,而不需要改变任何调用它的代码。 –

0

一个类可以改变一个字段的数据类型

我觉得这是在使用我们私人的访问修饰符错误thing.its不是数据类型及其访问修饰符变量可见的类只要。公共方法是来自外部java世界的这个类的字段的接入点。通常这些方法被称为getter和setter。因此想要访问的变量应该通过这些干将访问它们和setters.no需要改变private String name;public String name;

相关问题