アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaのソースにsuper(String);といった記述がありました。この処理によって文字列Stringはどのような変化をするのでしょうか。スーパークラスと関連はあるのでしょうか?

A 回答 (3件)

それは、コンストラクタの中に記述があったはずです。



super(引数) は、基底クラスのコンストラクタを呼び出します。
引数がどうなるかは、その基底クラス次第なんですが、普通のクラスならば、
コンストラクタで、その引数に対して変化を与えるようなことはしないはずです。
    • good
    • 0
この回答へのお礼

おっしゃる通りコンストラクタ中に記述がありました。基底クラスの理解が足りないのでなにをしているのかがいまいち理解できませんが、、、

お礼日時:2002/01/08 11:20

多分、"String"の部分は、ソースそのままの記述ではなく、nights03さんが、その引数がString型であるのを


見てこのように記述されたのだと思います。その前提で書きます。
superの意味は、a-kumaさんがおっしゃっているように、基底クラスのコンストラクタの呼び出しです。
コンストラクタのうち、String型の引数をとるものが呼び出されます。その処理の中で、その引数が
どのように使われるのかは、そのコンストラクタ次第ですが、仮に何か変化させた場合でも、それは
元の引数には反映されません。これは、一般的に参照型の引数について言えることではなく、String型の
特徴なのですが、String型は変化させることができず、必ず新しいインスタンスが作られるからです。
    • good
    • 0
この回答へのお礼

おっしゃる通りでコンストラクタ中に記述されていたものを勝手にString型の変数と思いこんでいました。ですが基底クラスがいまいち理解できていない為混乱しています。たとえば以下の記述があった場合基底クラスはhogehogeでよいのでしょうか。

public class hogehoge {
....
....
public hogehoge(String title){
super(title);
...
...

お礼日時:2002/01/08 11:17

> 以下の記述があった場合基底クラスはhogehogeでよいのでしょうか。


違います。hogehogeは扱っているクラスそのもの(何か用語があったかな?)です。
コード中では、thisというキーワードでインスタンスを参照することができます。
ご質問のコードには、実は基底クラスが書かれていないのですが、この場合、
基底クラスjava.lang.Objectの記述が省略されていると見なされます。

具体的に基底クラスを指定する場合は、例えば
class A extends B {
}
という記述をすると、BがAの基底クラス(AはBの導出クラス)となります。
class B の記述は、どこか別のところにあることになります。
    • good
    • 0
この回答へのお礼

わかりやすい説明をいただきありがとうございました。

お礼日時:2002/01/08 17:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!