作为新手,有时问题可能会重复。我知道Java中的封装和访问修饰符。但在一次采访中,有人问我为什么大多数时候变量是私有(private)的,而 getter 和 setter 是公共(public)的。我想知道一些我在 stackoverflow 中找不到的示例。
最佳答案
例如,参加 Person 类(class):
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 或其他您不想要的值。
您希望实现您的类(class)的其他用户不能像他们想要的那样更改变量,而是希望他们坚持您的“控制流”。以复杂的算法为例,您不希望直接让用户使用此设置变量,因为这可能会破坏功能。您可能感兴趣的另一点是,如果您有一个只能通过公共(public) setter 方法设置的私有(private)变量,则可以记录更改。
关于java - 为什么在java中将类变量设为私有(private)而将方法设为公共(public)更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56767709/