- - PR -
フィールドのインスタンス変数について
1
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-04 08:29
あるClassAというクラスが宣言されている。
そのなかで public ClassA(String name) ・・・というコンストラクタが定義されている。 別のクラス(MainClass)のフィールドで以下のようなインスタンス変数を宣言し初期化する。 ClassA abc = new ClassA("英語"); このとき自分は変数abcが参照するインスタンスが生成されるものだと 思っていたのですが、生成されないようです。 それはMainClassのインスタンスが新たに生成されない以上、abcの インスタンスも生成されないというのです。 だとしたらMainClassのフィールドでインスタンス変数である基本データ型 (たとえばint a = 100;) とした場合でも、MainClassのインスタンスが作られるまで aは100で初期化されないのでしょうか。 よく分からないので、ご教示お願いいたします。 | ||||||||||||||||||||
|
投稿日時: 2006-09-04 09:06
意味がわかんない・・・ aが初期化されるかどうかは実装次第なのに。 | ||||||||||||||||||||
|
投稿日時: 2006-09-04 09:15
インスタンス変数というのは、インスタンス一つにつき一組ずつ存在するものですよね。インスタンスが生成されなければ、インスタンス変数は存在しないでしょ。
| ||||||||||||||||||||
|
投稿日時: 2006-09-04 09:17
インスタンスのメンバ変数ですから、インスタンス生成されるまで初期化されないとい うか、存在自体していない状態になります。 ※なんとか読み下そうとしましたが、これが限界でございました。 | ||||||||||||||||||||
|
投稿日時: 2006-09-04 09:20
何を仰りたいのかが分りにくいです。
いったい何をしたかったのでしょうか。 ClassA abc = new ClassA("英語"); をしないうちに ClassAの変数aを参照したい、ということですか? | ||||||||||||||||||||
|
投稿日時: 2006-09-04 09:25
つまり以下のような状態でしょうか?
「このとき」とはどのときでしょう? 「ソースコードを書いたとき」であれば当然インスタンスは生成されませんね 実行したときでしょうか? 少なくとも MainClass b = new MainClass(); とすればフィールドabcにはClassAのインスタンスが格納されますね。
では問題です。 「作られていないMainClassのフィールドが初期化されている状態」 とはどんな状態でしょうか? 作られていないインスタンスのフィールドは まだ生まれてもいないのだから初期化されていないのが当然ではないですか? インスタンスを作成する際、初期化がどのように行われるかは 「プログラミング言語Java」 http://www.amazon.co.jp/exec/obidos/ASIN/4894713438 が詳しいですね。 もしも
上記コードの位置でフィールドabcが初期化されない、 ということをおっしゃっているのであれば、 staticとそうではないフィールド・メソッドの意味を調べてみてください。 | ||||||||||||||||||||
|
投稿日時: 2006-09-04 10:31
分かりづらい質問ですいませんでした。
staticとそれ以外の変数の使い方など、基本的なことで誤解していたことが 分かりやすい解説で分かりました。 いろいろありがとうございました。 |
1