教えてください。
1、コンストラクタって何ですか?クラスのオブジェクトを初期化するためのものなんですか?
2、class FooのオブジェクトFoo hogeを初期化するときは
Foo hoge=new Foo();とかくことはわかったんすけど、hogeを何個もいっぺんに
初期化したいときはどう書けばいいんですか?
Foo hoge1=new Foo();
Foo hoge2=new Foo();
はしんどいっす。Foo型の配列とかつくれるんですか?
>>93 1.コンストラクタって何ですか?
クラスのオブジェクトを初期化するためのものと考えていて良いです。
インスタンスが生成された後、インスタンス変数の初期化前に動く手続きです。
スーパークラスのコンストラクタは呼び出さなくても暗黙に呼び出されます。
2.hogeを何個もいっぺんに初期化
Foo hoge[100];
for ( int i=0 ; i<hoge.length ; i++ ) hoge[i] = new Foo();
とでもしてください。
なんか他に一気に生成する方法あるのかな?
あまり大量のオブジェクトつくるアプリ書かないから実はよく分からない。
大量に作るときはArrayList使って保持してるし。
あり?インスタンス変数初期化されてからコンストラクタ動くわ。スマソ。
更にスマソ。
Foo hoge[] = new Foo[100];
としてくださいな。
93です、
>>96さんありがとです。一応あれから考えに考えて
こんなんしたどうなんだろと思ったんですけど、やっぱり自分的にも
おかしいっす。
class Foo{
static double [] hoge;
}
public class Aso{
public static void main(String args[]){
Foo [] foo = new Foo [2];//Fooクラスの変数fooを2個作ったつもり
for(int i=0;i<2;i++){
foo[i]=new Foo();//2個を初期化したつもり
}
for(int i=0;i<2;i++){
foo[i].hoge = new double[3];//foo[i]のhogeを3の配列として初期化したつもり
}
}
}
つもりなんですけど、foo[i].hoge = new double[3];って変だと思うんですけど、正しい
書き方わからないんです。教えてくださいまし。
>大量に作るときはArrayList使って保持してるし。
ってなんすか?興味しんしん。
>>100 言ってることわからん。答えないなら書くなよ。
102 :
デフォルトの名無しさん:02/08/03 02:07
foo[i].hoge = new double[3];//foo[i]のhogeを3の配列として初期化したつもり
を外から配列サイズ(3)を指定しなくていいのであれば、
public class Foo {
double[] hoge = new double[3];
}
または
public class Foo {
double[] hoge;
public Foo() {
hoge = new dobule[3];
}
}
とすればいい。
93です。
>>99の質問ですが、最初に投げた質問
>>93とすこし違って
しまいました。クラスFooのFoo型の変数fooのクラス変数hoge
が配列のとき、fooを配列を使ってたくさん初期化したときに、
foo[i].hogeを初期化するにはどうすればいいのですか?
です、たぶんそうです。初心者なので質問がうまくつくれません。よろしこ。
>>99 static double[] hoge;
としてしまうと、hogeがFooクラスの全インスタンスで共有されてしまうから
staticはつけてはいけない。
続けて質問するんなら番号でもいいから名前つけれや。
話がわかりにくい。
>>102さん、ありがとです。
mainでキーボードからの入力でdouble[] hoge = new double[];
のサイズを指定しています(サイズと書くのか、メモ)。ですので、
できれば、mainでサイズ3の配列として初期化する方法を知りたいです。