2016-10-18 13 views
-1

私は現在、私の大学でイントロレベルのCSコースを取っています。私の教授はsuper.method()ではなくの使用を主張しています。オーバーライドのない場合のスーパーvs.これの使用

例:スーパークラスgetOneIntersectingObject()からメソッドを呼び出しています。スーパークラスにあるので、通常super.getOneIntersectingObject()を使用して呼び出します。しかし、私の教授は私にthis.getOneIntersectingObject()を使ってそれを呼びたいと思っています。

私はthisは現在のクラスを検索し、任意のスーパークラス内の任意の同様のmethod()という名前の上にそのmethod()を実行し、私の質問はこれであることを理解:

あなたがメソッドをオーバーライドしていない場合は、なぜthisを使うのか?これはちょうど一般的なプログラミングのエチケットですか?

+1

ここに実際のコードを表示できますか? 'this.method()'は 'super.method()'とは異なり、2つは必ずしも並置されているわけではありません。 –

+0

'this.method()'は常に冗長ですが。 – chrylis

+1

@chrylisではない*常に*、ちょうどよく。 –

答えて

2

thisこのメソッドをオーバーライドしないのはなぜですか?

  • のでそれはあなたが呼んでいるものを方法に応じて、thisまたはsuperを使用するよりも一貫むしろthisを使用することがあまり複雑です。

  • 後でオーバーライドを追加できます。 superを使用すると、あなたが戻ってきた場所のすべてを修正する必要があります。

  • はい、これは正常な処理であるためです。

これはCWであり、理由を挙げてジャンプしたい人は、躊躇しないでください。

0

オーバーライドを使用しない場合は、thisまたはsuperを使用する必要はありません。オーバーライドがある場合、は子クラス(派生クラス)のメソッドを呼び出し、super.method()は親クラスのメソッドを呼び出します。 super.method()は、「子クラスではなく、親クラスのメソッド()を実行します。

関連する問題