The method public boolean mergesWith(Tile moving) returns true if this and moving tiles have the same value. But when I check if they are the same by doing the following:
if(this.value == temp.value){
    return true;
}
then it shows me error on temp.value saying that value cannot be resolved or is not a field. 
How can I fix that?
Class TwoNTile:
package Game2048;
// Concrete implementation of a Tile. TwoNTiles merge with each other
// but only if they have the same value.
public class TwoNTile extends Tile {
    private int value;
    // Create a tile with the given value of n; should be a power of 2
    // though no error checking is done
    public TwoNTile(int n){
        value = n;
    }
    // Returns true if this tile merges with the given tile. "this"
    // (calling tile) is assumed to be the stationary tile while moving
    // is presumed to be the moving tile. TwoNTiles only merge with
    // other TwoNTiles with the same internal value.
    public boolean mergesWith(Tile moving){
        Tile temp = moving;
        if(this.value == temp.value){
            return true;
        }
        else{
            return false;
        }
    }
    // Produce a new tile which is the result of merging this tile with
    // the other. For TwoNTiles, the new Tile will be another TwoNTile
    // and will have the sum of the two merged tiles for its value.
    // Throw a runtime exception with a useful error message if this
    // tile and other cannot be merged.
    public Tile merge(Tile moving){
        return null;
    }
    // Get the score for this tile. The score for TwoNTiles are its face
    // value.
    public int getScore(){
        return -1;
    }
    // Return a string representation of the tile
    public String toString(){
        return "";
    }
}
Class Tile:
package Game2048;
// Abstract notion of a game tile.
public abstract class Tile{
  // Returns true if this tile merges with the given tile. 
  public abstract boolean mergesWith(Tile other);
  // Produce a new tile which is the result of merging this tile with
  // the other. May throw an exception if merging is illegal
  public abstract Tile merge(Tile other);
  // Get the score for this tile.
  public abstract int getScore();
  // Return a string representation of the tile
  public abstract String toString();
}
 
     
     
     
    