当内部类变量和和外部类变量同名时

来源:互联网 发布:mmd动作数据制作 编辑:程序博客网 时间:2024/06/05 21:15
我知道当内部类变量和和外部类变量同名时要用this修饰,但是我下面这段代码
/******内部类***********/
@SuppressWarnings("serial")
public class ChessImage extends JPanel {

public  void init() throws Exception{
table=ImageIO.read(new File("image/board.jpg"));
black=ImageIO.read(new File("image/black.gif"));
white=ImageIO.read(new File("image/white.gif"));
selected=ImageIO.read(new File("image/selected.gif"));
chessboard.initBoard();
this.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
this.addMouseListener(new MouseAdapter()
{   @Override
public void mouseClicked(MouseEvent e)
{

posX=(int)((e.getX()-X_OFFSET)/RATE);
posY=(int)((e.getY()-Y_OFFSET)/RATE);
//如果if条件不通过,直接跳出mouseClicked()方法
if(GobangGame.this.isValid(posX,posY))
{
chessboard.getBoard()[posX][posY]=" ";
chessimage.repaint();

    chessman = Chessman.BLACK.getChessman();
if (isWon(posX, posY, chessman)) {
isOver = true; 
chessman = Chessman.BLACK.getChessman();
...............................................下面代码略过


为什么.isValid方法eclipse要求我前面要加GobangGame.this限定(GobangGame是外部类类名),然而同是外部类方法,下面的isWon方法却不用,为什么?????



问题已经解决了,原因其实很简单,isValid方法其实也是java.awt.Component这个类的方法,所以要加上限定