java - 为什么在java中将类变量设为私有(private)而将方法设为公共(public)更好

标签 java

作为新手,有时问题可能会重复。我知道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/

相关文章:

java - 关闭虚拟机

java - jvm8 中的元空间大小是多少?

java - 如何防止主线程执行下一行,直到最后一行完全执行

java - JUnit 5 @EnabledIfSystemProperty 无法按预期工作

java - Spring Data Neo4j 如何开始事务工作?

java - 编译报错ConcurrentModificationException,试图使用移除同名的方法

Java下载文件有时会产生CRC

Websphere 7 中 Axis2 1.4 的 Java 2 安全性

java - Spring Boot REST Controller 仅与尾随 "/"匹配

java - 如何将 while 循环改为 for 循环