作为新生,有时这个问题可能会重复。我知道Java中的封装和访问修饰符。但是在一次采访中,有人问我为什么大多数时间变量都是私有的,而getter和setter都是公共的。我想举一些例子,说明我在stackoverflow中找不到的地方。
答案 0 :(得分:1)
例如,参加一个Person类:
public class Person {
private String name;
private String surname;
private int age;
public void setAge(int age) {
if (age < 0 ) throw new IllegalArgumentException("age cannot be negative");
this.age = age;
}
}
这使您可以控制如何从外部更改变量。如果您有age
变量public
,则可以将age
设置为-50或其他您不想要的内容。
您希望实现您班上的其他用户不能像他们想要的那样更改变量,而是希望他们坚持您的“控制流”。以一个复杂的算法为例,您不想直接让该设置变量的用户使用,因为这可能会破坏功能。可能会让您感兴趣的另一点是,如果您拥有只能通过公共setter方法设置的私有变量,则可以记录更改。