2017-10-10 1 views
-1
public class Foo() { 

    public Foo() { 
    this.otherMethod(); 
    otherMethod(); 
    } 

    public void otherMethod() { 
    System.out.println("called"); 
    } 

} 

------ 
Main: 

Foo foo = new Foo(); 

どちらも期待通りotherMethod仕事への呼び出し、と私はを知りたいあなたは他のの上で1つを使用する必要があり、特別な場合があります。オブジェクトメソッドがjava内の別のオブジェクトメソッドを呼び出すときに、必ず "this"キーワードを使用する必要がありますか?

"いつ私はthisを使用するのですか"という質問に答えるのは難しいですが、この場合、最も論理的なオプションは何でしょうか?

答えて

3

あなたが与える例では、違いはありません。 thisが使用されているため、コンパイラは、同じ名前を持ちスコープ内にあるときに、異なるクラスのメンバ間の違いを知ることができます。例えば、

public class Foo() { 

    private int bar; 

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

} 

あなたは私の例ではthisを省略した場合や、単にそれはその文脈でthis.barよりも優先されますので、その文でbarの両方の出現は、パラメータ変数を参照することになる、bar = bar書きました。

1

違いは全くありません。非静的メソッドは常にオブジェクトに対して呼び出されます。指定しない場合、コンパイラはthisで呼び出します。 thisを指定することは完全に冗長です。

0

例では、両方のメソッド呼び出し(this、および出力なしthis)は同じです。それらはどちらもコンストラクタを使用してインスタンス化したオブジェクトに属します。

通常、オブジェクトインスタンスを使用して非静的メソッドを呼び出します。オブジェクトインスタンスが存在しない場合は、呼び出しメソッドを所有するオブジェクトに暗黙的に属します(thisを使用するか、thisを使用しないで使用できます)

関連する問題