1  /**
  2     This example demonstrates the this reference.
  3  */
  4  public class Counter
  5  {
  6     private int value; 
  7  
  8     /**
  9        Constructs a counter with a given value
 10     */
 11     public Counter(int value) 
 12     {
 13        this.value = value;
 14        // this. resolves the conflict between an instance variable
 15        // and a local variable with the same name
 16     }
 17  
 18     public Counter()
 19     {
 20        this(0);
 21        // Invokes the Counter(int value) constructor with value = 0
 22     }
 23  
 24     /**
 25        Advances the value of this counter by 1.
 26     */
 27     public void click() 
 28     {
 29        this.value = this.value + 1;
 30        // Using this makes it clear that the instance variable is updated
 31     }
 32  
 33     /**
 34        Gets the previous value of this counter.
 35        @return the previous value
 36     */
 37     public int getPrevious() 
 38     {
 39        return getValue() - 1;
 40        // When you call a method without an object, it is invoked
 41        // on the this reference, i.e this.getValue().
 42     }
 43  
 44     /**
 45        Gets the current value of this counter.
 46        @return the current value
 47     */
 48     public int getValue()
 49     {
 50        return value;
 51        // Or, if you prefer, return this.value;
 52     }
 53  }