使用getter和setter的优点是什么 - 只能获取和设置 - 而不是简单地使用公共字段来存储这些变量?
如果getter和setter做的不仅仅是简单的get/set,我可以非常快地解决这个问题,但我并不是100%清楚如何:
public String foo;
Run Code Online (Sandbox Code Playgroud)
更糟糕的是:
private String foo;
public void setFoo(String foo) { this.foo = foo; }
public String getFoo() { return foo; }
Run Code Online (Sandbox Code Playgroud)
而前者需要很少的样板代码.
可能重复:
为什么要使用getter和setter?
我已阅读的书Java,说这是好事,创建getter和setter方法的变量,如x和y.例如:
public int getX(){
return x;
}
public void setX(int x){
this.x = x;
}
Run Code Online (Sandbox Code Playgroud)
但与此有什么不同
...(shape.x)... // basically getX()
Run Code Online (Sandbox Code Playgroud)
和
shape.x = 90; // basically setX()
Run Code Online (Sandbox Code Playgroud)
如果选手和吸气器更好,你能解释一下会出现什么样的实际问题吗?
请原谅长度,但这里有两个程序,两者完全相同,但有一个有一个没有setter,getter和构造函数.
我以前参加了一个基础的C++课程,并且不记得其中的任何一个,目前我没有看到它们的重点,如果有人能用lamen的话解释它们,我会非常感激它.当他们似乎只是空间浪费让我的代码看起来更长,但老师说他们很重要(到目前为止就是这样).
提前致谢!现在这里是代码:Mileage.java:
package gasMileage;
import java.util.Scanner; //program uses class Scanner
public class Mileage
{
public int restart;
public double miles, gallons, totalMiles, totalGallons, milesPerGallon;
public Mileage(int newRestart, double newMiles, double newGallons,
double newTotalMiles, double newTotalGallons, double newMilesPerGallon)
{
setRestart(newRestart);
setMiles(newMiles);
setGallons(newGallons);
setTotalMiles(newTotalMiles);
setTotalGallons(newTotalGallons);
setMilesPerGallon(newMilesPerGallon);
}
public void setRestart(int newRestart)
{
restart = newRestart;
}
public int getRestart()
{
return restart;
}
public void setMiles(double newMiles)
{
miles = newMiles;
}
public double getMiles()
{
return miles;
}
public void …Run Code Online (Sandbox Code Playgroud)