1

このチュートリアルに従う:

http://developer.android.com/training/notepad/notepad-ex2.html

ステップ2で、このメソッドが呼び出されます。

registerForContextMenu(getListView());

これは、アクティビティの公開メソッドです。さて、私はここで少しJava初心者です-スーパークラスのインスタンスメソッドを呼び出したい場合は、この前にこれを付ける必要があると思いまし。例えば

this.registerForContextMenu(getListView());

ここはただのスタイルなのですか?違いはありますか

this.registerForContextMenu 

そして単に

registerForContextMenu
4

4 に答える 4

2

いいえ、違いはありません。

を使用する必要はありませんがthis.、コードを明確にするためにとにかく行われることがよくあります。

staticまず、次のようなインスタンスメソッドの呼び出し規則を使用する と、メソッドがそうであるかどうかを簡単に判断できます。

this.registerForContextMenu() 

staticこのような方法:

ClassName.staticRegisterForContextMenu()
于 2012-08-24T19:11:37.757 に答える
1

を使用する必要はありませんthis。省略した場合は、thisスコープ内のメソッドを呼び出したと見なされます。this役立つ可能性のある特定の例の1つは、次のとおりです。

Boolean someVar;
public function setMe( Boolean someVar ) {
  this.someVar = someVar;
}

この場合、thisエラーが発生します。

于 2012-08-24T19:13:30.170 に答える
1

スーパークラスのメソッドを呼び出すには 、superclssのオブジェクトまたはキーワードsuperのいずれかが必要です。例えば。

superObject.superclassMethod();
    super.superclassMethod();

これは現在のオブジェクトの参照です。これは、それが使用されているクラスのメソッドを呼び出すために使用できます。これを使用してスーパークラスメソッドを呼び出すことはできません。

はどうかと言うと

this.registerForContextMenu() 

registerForContextMenu()

そのような違いはありません。どちらでも使用できます。

于 2012-08-24T19:42:48.490 に答える
0

クラスの現在の(this)インスタンスでメソッドを呼び出すには、どちらの方法も正しいです。非プライベートメソッドはスーパークラスから継承されるため、同じ構文を使用してそのようなメソッドを呼び出すことができます。

于 2012-08-24T19:11:57.857 に答える