Java中this和super关键字的用法

一、this

this关键字只能用在方法的方法体内。当一个对象创建后,JVM就会给这个对象分配引用自己的指针,这个指针的名字就叫做this。也正因为如此,this只能用在非静态方法中。并且this只和特定的对象关联,而不和类关联,所以看到this就表示调用这个方法的对象。同一个类的不同对象有不同的this,虽然都是this,但是含义是不同的。

“this是指向对象本身的一个指针”。

1、访问成员变量
方法参数或者方法中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.变量名”的方式来引用变量。但是,在没有同名的情况,可以直接用成员变量的名字,而不用this,用了也是正确的。

public class Test{
  private String username;
  private String password;

  public Test(String username, String password){
    //成员变量和参数同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量.
    this.username = username;
    this.password = password;
  }
}

2、调用当前类的构造方法
通过this调用本类中另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中可以用,并且只能放在类的构造方法的方法体的第一句。别的地方不能用。一般会在参数多的构造函数里面去用this调用参数少的构造函数。

public class Test{
  private String username;
  private String password;

  public Test(String username, String password){
  //成员变量和参数同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量.
    this.username = username;
    this.password = password;
  }

  public Test(String name){
    this(name, "空");
    //相当于给了两个参数(其中一个参数已经定了,另一个参数在这个构造方法传入)。  
  }
}

3、在方法中,需要引用该方法所属类的当前对象的时候,直接用this。

二、super

1、在子类的构造方法中要调用父类的构造函数,用“super(参数列表)”的方式调用,注意“super(参数列表)”这条语句只能放在子类构造方法的方法体的第一句。

public class TestFirst{
  public Test(String username, String password){
    super(username,password);
  }
}

2、当子类方法中的局部变量或者子类的成员变量与父类的成员变量同名时,也就是子类局部变量或者子类的成员变量覆盖了父类的成员变量时,用“super.成员变量”引用父类的成员变量。当然父类的成员变量没有覆盖,也可以用“super.成员变量名”来引用父类的成员变量。

3、如果子类重写了父类的某一个方法,即子类和父类有相同的方法定义,但是有不同的方法体,此时,我们可以通过"super.成员方法名"来调用父类里面的这个方法。

你可能感兴趣的:(Java中this和super关键字的用法)