江明涛的博客
this 和 super 的区别
this 和 super 的区别

this 和 super 的区别

this和super的区别

在面向对象的编程中,this和super是两个关键字,用于引用当前对象和父类对象。虽然它们在用法上有一些相似之处,但它们之间也存在一些重要的区别。

this关键字

this关键字在一个对象的方法中使用,它代表当前正在调用方法的对象。使用this关键字可以引用当前对象的成员变量和方法。

例如:

class Person {
   private String name;
   public Person(String name) {
      this.name = name;
   }
   public void printName() {
      System.out.println("My name is " + this.name);
   }
}

在上面的例子中,this.name引用了当前对象的name变量。

super关键字

super关键字用于引用父类的成员变量和方法。它可以在子类中使用,用于在子类中访问继承自父类的成员。

例如:

class Animal {
   protected String sound;
   public Animal() {
      this.sound = "Unknown";
   }
   public void makeSound() {
      System.out.println("The animal makes a sound: " + this.sound);
   }
}
class Dog extends Animal {
   public Dog() {
      super();
      this.sound = "Bark";
   }
}

在上面的例子中,super()调用了父类的构造函数,this.sound引用了子类中继承的sound变量。

this和super的区别

1. 使用范围:this关键字可以在方法内部和构造函数中使用,而super关键字只能在子类中使用。

2. 引用对象:this关键字引用的是当前对象,super关键字引用的是父类对象。

3. 成员变量和方法:this关键字可以引用当前对象的成员变量和方法,super关键字可以引用父类对象的成员变量和方法。

4. 构造函数:this关键字可以在构造函数中调用其他构造函数,而super关键字用于调用父类的构造函数。

总结:this和super是两个关键字,用于引用当前对象和父类对象。它们在使用范围、引用对象、成员变量和方法、以及构造函数等方面有所不同。

希望本文对于理解this和super的区别有所帮助。