大家都说我们需要让每个变量都是私有类,并且用getter/setter来访问它们。我试图理解为什么我们总是需要这样做?举例来说,如果我做一个简单的游戏,并创建一个对象类,其中存储x和任何对象的y坐标及其他物体(如精灵),是不是好做:Java - 封装目的在某些情况下
public class Object
{
public float x, y;
public Object(float x, float y)
{
this.x = x;
this.y = y;
}
}
public class Sprite extends Object
{
public Sprite(float x, float y, /* other stuff, e.g. img src */)
{
//...
}
}
,并用它如:
sprite1 = new Sprite(/* ... */);
checkSomething(sprite1.x, sprite1.y);
难道不是更自然更快吗?就像我们需要在一帧中比较对象坐标数千次一样?我们不需要验证坐标 - 每个浮动都可以。那么,为什么像getX()和setX(/ * ... * /)这样的函数会做同样的事情呢?
如果你的例子中对象的位置是'final'(永远不会再改变一次设置),那么把它作为'public'提供是合理的。例如,这与'array.length'相同。直接更改状态可能会在更大的代码中产生意想不到的后果。 – ChiefTwoPencils