【问题标题】:Why making class variables private and methods public are better in java [duplicate]为什么在java中将类变量设为私有而将方法设为公开更好[重复]
【发布时间】:2019-06-26 07:43:14
【问题描述】:

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

【问题讨论】:

  • 你应该为此做一些谷歌但没关系你可以从docs.oracle开始
  • 因为您希望能够控制如何更改变量
  • 假设您只希望 marks 变量介于 0 和 100 之间。如果它是公共的,则可以为其分配任何值,假设为 200。另一方面,如果您将其设为私有并现在提供 getter 和 setter,您可以控制值修改。您可以在 setter 中编写 if else 条件,并且不要将任何值设置为超出范围的 marks 变量。

标签: java


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

【讨论】:

    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 2011-09-10
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多