在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;
答
存取方法,被称为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;
}
评论'他们应该从模型中获得'是什么意思?什么样的模型? – 2013-03-12 18:49:58
您将需要消除两个实例变量:numCols和numRows。这会导致一些编译器错误,但是你需要做的就是用model.getNumOfCols()替换numCols的用法,对于numRows类似地用model.getNumOfRows()替换它,这样做会更好,因为如果cols或行在模型中发生变化,那么视图(即在面板中)在下一次面板被着色时就会自动完成。 – 2013-03-12 18:52:03
你使用这段代码的目的是什么?列和行的数量是什么意思?它们是视图的一部分(如在窗口中绘制的网格中)还是模型的一部分(如在数据库中)? – 2013-03-12 18:52:52