gpt4 book ai didi

java - myClassInstance.property 和 myClassInsance.getProperty() 之间的区别?

转载 作者:行者123 更新时间:2023-11-29 10:05:21 25 4
gpt4 key购买 nike

我是 Java 初学者,我想问一下这有什么优缺点:

如果我创建一个类并且我不会编写自己的 setter 和 getter,我可以获取并设置我的类的属性,例如:

myClassInstance.name = "Jones"
myClassInstance.job = "Manager"

System.out.println(myClassInstance.name);
System.out.println(myClassInstance.job);

为什么我制作 getter 和 setter 并像这样做会更好:

myClassInstance.setName("Jones");
myClassInstance.setJob("Manager");

System.out.println(myClassInstance.getName());
System.out.println(myClassInstance.getJob());

最佳答案

这个问题与 OO 设计的基本原则之一有关:封装!

访问器(也称为 getter 和 setter)是让您读取和写入对象实例变量值的方法

public class AccessorExample {
private String attribute;

public String getAttribute() {
return attribute;
}

public void setAttribute(String attribute) {
this.attribute = attribute;
}
}

为什么要使用它们?

Getter 和 Setters 使 API 更加稳定。让我们考虑一个由其他类访问的类中的公共(public)字段。稍后,您希望在获取和设置变量时添加任何额外的逻辑。这将影响使用 API 的现有客户端。因此,对该公共(public)字段的任何更改都需要更改引用它的每个类。相反,使用访问器方法,可以很容易地添加一些逻辑,比如缓存一些数据,稍后再对其进行惰性初始化。此外,如果新值与先前值不同,则可以触发属性更改事件。对于使用访问器方法获取值的类,所有这一切都将是无缝的。

此外,Getters 和 setters 方法允许不同的访问级别 - 例如。 Get 可能是公开的,但 Set 可能受到保护。

关于java - myClassInstance.property 和 myClassInsance.getProperty() 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9904960/

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