0

私のコードからわかるように、アクセサーを少し手伝ってもらえないかと思っていましたが、インスタンス変数として int numCols と int numRows を使用することは想定されていません。

アクセサー 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;
4

1 に答える 1

2

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-12T18:53:57.003 に答える