- - PR -
superとthis
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-14 17:51
お世話になっておりますmaysです。
現在Javaを勉強中なのですが、ちょっと解らない部分が出てきましたので 質問させていただきます。 以下のサイトを読んで勉強しております。 http://www.techscore.com/tech/Java/main.html この中の「1.ウィンドウの作成」の「実習課題1」について 自分では、以下のようにコードを書いてみました。 ウィンドウを1つ表示させるというものです。
4行目〜6行目の部分が、解答例では以下のようにsuperを使っています。
両方ともコンパイルが通り、実行したらウィンドウが1つ表示されました。 自分の解釈としては、JFrameを拡張したSampleFrame自身のタイトルや サイズを決めているのでthisを使ったのですが、このような場合は superとthisのどちらを使うものなのでしょうか。 | ||||||||
|
投稿日時: 2004-10-14 18:08
superを使うのは、自分のクラスではなく親クラスのメソッドを限定して呼び出したいときです。
挙げられている例だとsuperを指定する意味はないでしょう。 また、自分自身のメソッドを呼び出すときのthisの指定ですが、好みの問題でしょうが私は 省略します。 | ||||||||
|
投稿日時: 2004-10-14 18:26
丁寧な返信ありがとうございます。
自分の中で、もやもやしていたものがスッキリしました。 使い方としては 自分のクラスの中と、親クラスの中に同名のメソッドがある際に ・自分のクラス内のメソッドを使う場合:thisもしくは省略 ・親クラスのメソッドを使う場合:super という使い方だと理解しました。 ありがとうございました。 | ||||||||
|
投稿日時: 2004-10-14 22:38
unibon です。こんにちわ。
コンストラクタでの super、すなわち
は、使うことは多いです。これは多用しても構わないでしょう(引数並びが違うコンストラクタがたくさんあって良いかどうかという問題は別にして)。 しかし、その一方で、super.setTitle("test") のような super は、めったなことでは使わないものです。このような super を使うか使わないかは、一線を画すと思います。普通のアプリケーションを書いている限りは、使わなくて良いのではないか、逆に言えば、使うようになっていたら相当の必然性があるはず(必然性があるべき)、と考えたほうがよいと思います。 | ||||||||
|
投稿日時: 2004-10-15 07:20
ありがとうございます。
まだ具体的な使い分け方が把握できてはいませんが ・コンストラクタでsuperを使うことは多い ・super.setTitle("test")的な使い方はめったにしない という事を覚えておいて、これから勉強を進めて 実際の事例に出会った時に、実感できたらと思います。 |
1