Difference between "this" and"super" keywords in Java

Sumithra picture Sumithra · Oct 26, 2010 · Viewed 126.3k times · Source

What is the difference between the keywords this and super?

Both are used to access constructors of class right? Can any of you explain?

Answer

Nithesh Chandra picture Nithesh Chandra · Oct 26, 2010

Lets consider this situation

class Animal {
  void eat() {
    System.out.println("animal : eat");
  }
}

class Dog extends Animal {
  void eat() {
    System.out.println("dog : eat");
  }
  void anotherEat() {
    super.eat();
  }
}

public class Test {
  public static void main(String[] args) {
    Animal a = new Animal();
    a.eat();
    Dog d = new Dog();
    d.eat();
    d.anotherEat();
  }
}

The output is going to be

animal : eat
dog : eat
animal : eat

The third line is printing "animal:eat" because we are calling super.eat(). If we called this.eat(), it would have printed as "dog:eat".