在Java中的访问器,援助?

问题描述:

我只是想知道如果我可以有一点访问器的帮助,你可以从我的代码中看到,我不应该使用int numCols和int numRows作为实例变量。在Java中的访问器,援助?

我们需要访问器getNumOfCols()和getNumOfRows()。我们需要这些,因为面板不应该有numCols和numRows自己的实例变量。如果您复制这种数据,您只是在问问题,因为它可能会变得不一致。

请任何人都可以帮助我创建访问器,以取代我的实例变量?

class MineFinderPanel extends JFrame implements MouseListener // changed 
{ 
// numCols and numRows shouldn't get here. They should be gotten from the model 
int numCols; 
int numRows; 
+1

评论'他们应该从模型中获得'是什么意思?什么样的模型? – 2013-03-12 18:49:58

+0

您将需要消除两个实例变量:numCols和numRows。这会导致一些编译器错误,但是你需要做的就是用model.getNumOfCols()替换numCols的用法,对于numRows类似地用model.getNumOfRows()替换它,这样做会更好,因为如果cols或行在模型中发生变化,那么视图(即在面板中)在下一次面板被着色时就会自动完成。 – 2013-03-12 18:52:03

+0

你使用这段代码的目的是什么?列和行的数量是什么意思?它们是视图的一部分(如在窗口中绘制的网格中)还是模型的一部分(如在数据库中)? – 2013-03-12 18:52:52

存取方法,被称为getter和setter只是用来操纵字段或变量应该是私有的,只能由创建它的类操作。所以私人领域与公共方法。

所以你应该有一个类为你的框架创建模型。

访问器方法的示例。你将不得不做另一类来实现它们:

// private - only available within its class 
private int numCols; 
private int numRows; 

// public methods - ability to access the private fields. 
public int getNumCols() { 
    return this.numCols; 
} 

public int getNumRows() { 
    return this.numRows; 
}