【发布时间】:2020-04-12 19:41:23
【问题描述】:
当 Java 使用组合而不是继承时,我对 Java 中的 setter 和 getter 有疑问。 我在解决大学作业时产生了这种疑问。
假设我有 2 个课程:汽车和电池。 Battery 有 3 个变量(var1、var2、var3)以及 getter 和 setter。
汽车类是这样的:
public class Car {
private String color;
private String model;
private Battery battery;
public Car(String color, String model, Battery battery) {
this.color = color;
this.model = model;
this.Battery = new Battery(battery);
}
public getBattery() {
return new Battery(battery);
}
public void setBattery(Battery battery) {
this.battery = new Battery(battery.getVar1(), battery.getVar2(), battery.getVar3());
//or this.battery = battery;
}
我知道 getter 方法的原因(因为它与对象的引用有关),但是 setter 方法呢? 我尝试在网络上查找 Udemy 的 Java 课程(来自 Tim Buchalka),但我没有看到这个问题。
有人可以帮帮我吗?谢谢!
【问题讨论】:
-
请澄清您不清楚的问题
-
我认为对于 setter 方法也是同样的原因。但是,我不建议您执行这样的实现,因为复制实例并不直接(而且这也不是常见的做法)。
-
@Nithin 我对 setter 的怀疑是,每次我在网络示例中看到一个对象的 setter 时,它总是类似于“this.battery = battery”。但是在我这个大学学科的pdf文件上,那里的例子和我放的一样。我知道您正在重新定义对象的 3 个变量,但我怀疑是否因为引用的东西而按照我写的方式更好,或者是否有其他原因(如良好做法或其他)。
-
@Lenon 是的,这就是重点。在这门大学科目上我必须这样做,否则我的成绩会低一点。考虑到我在互联网上的任何地方都没有看到这样的实现,我只想 100% 理解其中的原因。
-
看看immutability。
标签: java oop composition