每个人都说我们需要将类中的每个变量设为私有,并使用getter / setter访问它们。我试图理解为什么我们总是需要这样做?例如,如果我制作一个简单的游戏并创建一个Object类,它存储任何对象和其他对象(例如sprite)的x和y坐标,那么最好不要这样做:
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(/ * ... * /)这样的函数做同样的事情会使它复杂化呢?
答案 0 :(得分:2)
每个人都说我们需要在私有的
中创建每个变量
由于x
和y
是 Point
中的公共字段,我相信你断言字段必须是私有的是有缺陷的。但是,通常建议使用它。主要是因为encapsulation是一个重要的设计原则。链接的维基百科文章(部分)
用于限制对某些对象组件的访问的语言机制
创建字段private
的原因是什么。