- ベストアンサー
superの使い方
javaのソースにsuper(String);といった記述がありました。この処理によって文字列Stringはどのような変化をするのでしょうか。スーパークラスと関連はあるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 以下の記述があった場合基底クラスはhogehogeでよいのでしょうか。 違います。hogehogeは扱っているクラスそのもの(何か用語があったかな?)です。 コード中では、thisというキーワードでインスタンスを参照することができます。 ご質問のコードには、実は基底クラスが書かれていないのですが、この場合、 基底クラスjava.lang.Objectの記述が省略されていると見なされます。 具体的に基底クラスを指定する場合は、例えば class A extends B { } という記述をすると、BがAの基底クラス(AはBの導出クラス)となります。 class B の記述は、どこか別のところにあることになります。
その他の回答 (2)
- ranx
- ベストアンサー率24% (357/1463)
多分、"String"の部分は、ソースそのままの記述ではなく、nights03さんが、その引数がString型であるのを 見てこのように記述されたのだと思います。その前提で書きます。 superの意味は、a-kumaさんがおっしゃっているように、基底クラスのコンストラクタの呼び出しです。 コンストラクタのうち、String型の引数をとるものが呼び出されます。その処理の中で、その引数が どのように使われるのかは、そのコンストラクタ次第ですが、仮に何か変化させた場合でも、それは 元の引数には反映されません。これは、一般的に参照型の引数について言えることではなく、String型の 特徴なのですが、String型は変化させることができず、必ず新しいインスタンスが作られるからです。
お礼
おっしゃる通りでコンストラクタ中に記述されていたものを勝手にString型の変数と思いこんでいました。ですが基底クラスがいまいち理解できていない為混乱しています。たとえば以下の記述があった場合基底クラスはhogehogeでよいのでしょうか。 public class hogehoge { .... .... public hogehoge(String title){ super(title); ... ...
- a-kuma
- ベストアンサー率50% (1122/2211)
それは、コンストラクタの中に記述があったはずです。 super(引数) は、基底クラスのコンストラクタを呼び出します。 引数がどうなるかは、その基底クラス次第なんですが、普通のクラスならば、 コンストラクタで、その引数に対して変化を与えるようなことはしないはずです。
お礼
おっしゃる通りコンストラクタ中に記述がありました。基底クラスの理解が足りないのでなにをしているのかがいまいち理解できませんが、、、
お礼
わかりやすい説明をいただきありがとうございました。