2015-10-18 81 views
-1

大家都说我们需要让每个变量都是私有类,并且用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(/ * ... * /)这样的函数会做同样的事情呢?

+2

如果你的例子中对象的位置是'final'(永远不会再改变一次设置),那么把它作为'public'提供是合理的。例如,这与'array.length'相同。直接更改状态可能会在更大的代码中产生意想不到的后果。 – ChiefTwoPencils

回答

2

都说我们需要让每一个变量类私人

由于xyPoint公共领域,我相信你的说法,字段必须是私有的是有缺陷的。但是,通常建议。主要是因为encapsulation是重要的设计原理。链接的维基百科文章说,(部分)

语言机制,限制对某些对象的组件

这是什么使一个场private做的访问。

+0

为什么回答这个问题而不是将它作为一个明显的重复关闭? – jaco0646

+0

@ jaco0646因为它不是(IMO)*明显*重复。 –

相关问题