在java中使用"this"关键字

Jun*_*tes 7 java

当ai遇到this关键字时,我正在研究Java中的方法覆盖.在Internet和其他来源上搜索了很多这个之后,我得出结论,this当实例变量的名称与构造函数的参数相同时,使用关键字.我是对还是错?

Ant*_*ram 13

this是实例中当前实例的别名或名称.它有助于消除本地变量(包括参数)的实例变量,但它本身可以用来简单地引用成员变量和方法,调用其他构造函数重载,或者只是引用实例.适用用途的一些例子(不详尽):

class Foo
{
     private int bar; 

     public Foo() {
          this(42); // invoke parameterized constructor
     }

     public Foo(int bar) {
         this.bar = bar; // disambiguate 
     }

     public void frob() {
          this.baz(); // used "just because"
     }

     private void baz() {
          System.out.println("whatever");
     }

}
Run Code Online (Sandbox Code Playgroud)

  • 值得指出的是:当在构造函数中使用时,`this(...)`必须是第一个语句. (3认同)
  • 诸如“this”之类的限定符或静态调用的类名使您的代码更具可读性并节省大量时间。一秒钟之内,读者就会知道变量或方法的范围或其来源。如果没有使用适当的限定符,我拒绝阅读/帮助解决代码问题。我没有时间遵循这些方法或猜测它们在哪个类中,特别是如果现代 ide 诸如 eclipse 具有保存操作的自动完成功能。 (2认同)

ada*_*ost 10

this 关键字可以用于(它不能与静态方法一起使用):

  1. 获取通过其调用该方法的对象的引用(实例方法).
  2. 避免由方法或构造函数参数遮蔽的字段.
  3. 调用同一类的构造函数.
  4. 在方法重写的情况下,this用于调用当前类的方法.
  5. 引用内部类.例如ClassName.this
  6. 创建内部类的对象,例如 enclosingObjectReference.new EnclosedClass