java - 如果类只有 getter 和 setter,为什么 Java 中的实例变量应该是私有(private)的

标签 java oop

我在面试中被问到以下问题,我很想知道答案。

有以下两个类,

public class EmployeeA{
    public int empId;
}
public class EmployeeB{
    private int empId;

    public void setEmpId(int empId){this.empId = empId;}
    public int getEmpId(){return empId;}
}

有两个类,其中一个类具有公共(public)实例字段,其他类具有带有 getter 和 setter 的私有(private)字段。在这种情况下,哪个实现方案更好,为什么? [我了解到将实例变量设置为私有(private)是更好的主意。但在这两种情况下,我都可以修改 empId 属性的值。 ]

最佳答案

他们可能正在寻找的单词答案是“encapsulation ”。

通过封装私有(private)字段值,您有机会更改将来如何设置/检索该值的逻辑。举例来说,您想要在集合上进行验证并在检索(获取)时进行过滤。通过封装该值,您可以创建一个 API,以便更好地进行维护。

关于java - 如果类只有 getter 和 setter,为什么 Java 中的实例变量应该是私有(private)的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26727372/

相关文章:

java - 从 HashMap 中提取一个元素并更新它

java - 一个微调器中是否可以有两种不同的字体大小

java - Spring AOP 表达式中访问修饰符有什么用?

php - 不确定我是否理解 OOP 和 PDO。尝试学习如何使用它

javascript - 扩展子类的对象成员

Java 返回一个新对象 *完全初学者

java - 语法错误: insert to complete classbody and mainclass

java - 如何将消息的发送和接收移至服务器线程?

c++ - C++ 中的值语义技巧

php - 命名空间类、函数和如何使用