当前位置: 首页 > 知识库问答 >
问题:

为什么要使用set和get方法,而你可以使用object.variable名称来获取或设置?[复制]

尉迟高澹
2023-03-14

我只是想知道使用set-and-get方法和只使用object是否有什么区别。要设置和获取的变量名称?谢谢

package hello;

public class Helloworld {

int num;

public static void main(String[] args) {
    Helloworld hello1 = new Helloworld();
    Helloworld hello2 = new Helloworld();

    hello1.num = 5;
    System.out.println(hello1.num);

    hello2.setNum(5);
    System.out.println(hello2.getNum());

}

void setNum(int i) {
    this.num = i;

}

int getNum() {
    return this.num;

}
}

共有3个答案

郏实
2023-03-14

因为有时变量是私有的,不能通过< code>obj.varname访问。简而言之:封装。

为了保护你的程序,你希望变量尽可能的私有,有时如果你想检查它是否是一个有效的值或者类似的东西,set方法会更好。

潘畅
2023-03-14

这基本上是一种最佳实践,与封装的概念有关。

如果您使用get和set方法,如果您决定向get或set方法添加一些额外的逻辑(例如验证),您以后会有更大的灵活性。

在getter的情况下,如果变量是一个原语,您还可以防止using类修改该变量。

微生阳平
2023-03-14

主要原因是封装。您希望您的变量是私有的,不能被用户或客户端直接修改,因为它可能会影响系统其他部分的行为。

 类似资料:
  • 问题内容: 如果我有这样的课程: 有没有办法知道使用名为类型的参数? 问题答案: 总结一下: 如果编译期间包含调试信息,则可以获取参数名称。查看此答案以获取更多详细信息 否则得到的参数名称是不是有可能 使用可以获取参数类型 为了编写编辑器的自动完成功能(如你在评论之一中所述),有几个选项: 使用,,等。 使用,等。 结合使用以上内容-前者用于非基本类型,而后者用于基本类型。 根本不显示参数名称-仅

  • 我可以用“小”函数定义“大”函数: 我可以这么说: 另一方面,如果我想多次使用同一个函数并为其使用名称,我就会遇到问题: 最后一行是禁止的。留言: 为什么?对我来说,plus2和plus2是一样的东西? 这篇文章有一个答案,建议在我的例子中使用::plus2。这在技术上有帮助,但不能解释这两种功能之间的区别。

  • 我没有在我的中设置,但是我可以使用和! 我的如下所示: 如果我想安装其他版本的JDK,比如11、14、15.…,我该如何使用它呢?我需要设置吗?

  • 问题内容: 在java中为什么要使用赋值getter和取值setter方法来访问属性? 问题答案: 实际上,有很多充分的理由考虑使用访问器,而不是直接公开类的字段-除了封装的论点之外,并使将来的更改更容易。 这是我知道的一些原因: 封装与获取或设置属性相关的行为-这样可以在以后更轻松地添加其他功能(例如验证)。 隐藏属性的内部表示形式,同时使用替代表示形式公开属性。 将公共接口与更改隔离开来-在实

  • 问题内容: 在阅读O’Reilly的“高性能MySQL”时,我偶然发现了以下内容 另一个常见的垃圾查询是SET NAMES UTF8,无论如何这是错误的处理方式(它不会更改客户端库的字符集;它仅影响服务器)。 我有点困惑,因为我曾经将“ SET NAMES utf8”放在每个脚本的顶部,以使数据库知道我的查询是utf8编码的。 任何人都可以评论以上引用,或者,更正式地说,是什么建议或最佳实践,以确