为什么在Java中将类变量设为私有并且将方法公开为更好

时间:2019-06-26 07:43:14

标签: java

作为新生,有时这个问题可能会重复。我知道Java中的封装和访问修饰符。但是在一次采访中,有人问我为什么大多数时间变量都是私有的,而getter和setter都是公共的。我想举一些例子,说明我在stackoverflow中找不到的地方。

1 个答案:

答案 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方法设置的私有变量,则可以记录更改。