gpt4 book ai didi

java - 为什么要使用 getter 和 setter/访问器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:42 26 4
gpt4 key购买 nike

使用 getter 和 setter(仅获取和设置)而不是简单地为这些变量使用公共(public)字段有什么优势?

如果 getter 和 setter 所做的不仅仅是简单的 get/set,我可以很快弄清楚这一点,但我不是 100% 清楚如何做:

public String foo;

比以下更差:

private String foo;
public void setFoo(String foo) { this.foo = foo; }
public String getFoo() { return foo; }

而前者使用的样板代码要少得多。

最佳答案

实际上有很多很好的理由考虑使用访问器而不是直接公开类的字段——除了封装和使 future 更改更容易的论点之外。

以下是我知道的一些原因:

  • 封装与获取或设置属性相关的行为 - 这允许以后更轻松地添加其他功能(如验证)。
  • 隐藏属性的内部表示,同时使用替代表示公开属性。
  • 使您的公共(public)接口(interface)免受变化影响 - 允许公共(public)接口(interface)在实现发生变化时保持不变,而不影响现有消费者。
  • 控制属性的生命周期和内存管理(处置)语义 - 在非托管内存环境(如 C++ 或 Objective-C)中尤为重要。
  • 为运行时属性更改时提供调试拦截点 - 在某些语言中,如果没有此功能,调试属性更改为特定值的时间和位置可能会非常困难。
  • 改进了与旨在针对属性 getter/setter 进行操作的库的互操作性 - 想到模拟、序列化和 WPF。
  • 允许继承者通过覆盖 getter/setter 方法来更改属性行为方式和公开方式的语义。
  • 允许 getter/setter 作为 lambda 表达式而不是值传递。
  • getter 和 setter 可以允许不同的访问级别 - 例如,get 可以是公共(public)的,但 set 可以是 protected 。

关于java - 为什么要使用 getter 和 setter/访问器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58317326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com