- ベストアンサー
コンストラクタについて
これも試験問題らしくて自分でやってみましたのであってるかどうか自信なくて どなたかみてみていただけたらと思います.よろしくお願いします。 下のソースファイルをコンストラクタを用いたものに修正しなさい class Sconst{ int x,y,z; void print(){ System.out.println(x); System.out.println(y); System.out.println(z); } } class ExConstTest{ public static void main (String[] args ){ Sconst sc=new Sconst(); sc.x=10; sc.y=30; sc.z=5; } } ------------------------------------------------------------- class Sconst{ int x,y,z; Sconst(){ x=10; y=30; z=5; } } class ExConstTest{ public static void main (String[] args ){ Sconst a1; Sconst a2; Sconst a3; a1=new Sconst(); a2=new Sconst(); a3=new Sconst(); System.out.println(a1.x); System.out.println(a2.x); System.out.println(a3.x); } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
・クラスSconstの関数printをなくしたのはなぜ? ・なぜa1~a3を用意したの? ・なぜa1.xとか使ってるの? public と明記していないから、使えないはずだけど。 ツッコミどころ満載ですが、一応私がやるとこんな感じ? ※整形のため、全角スペースを使っています。 class Sconst { int x,y,z; Sconst() { x = 10; y = 30; z = 5; } public void print() { System.out.println(x); System.out.println(y); System.out.println(z); } } class ExConstTest { public static void main (String[] args) { Sconst a1; a1 = new Sconst(); a1.print(); } }
その他の回答 (2)
- anmochi
- ベストアンサー率65% (1332/2045)
僕的にはこう。 public class Sconst { private int x,y,z; public Sconst(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } public void print() { System.out.println(this.x); System.out.println(this.y); System.out.println(this.z); } } public class ExConstTest { public static void main (String[] args) { Sconst sc = new Sconst(10, 30, 5); // ここにsc.print()は無くて良いの? } } x、y、zの値は「このクラスを作る側」に指定させないといけない。それを、値を受け取るコンストラクタを用意してやる事で、newのタイミングで受け渡すようにしなさい、って事じゃないかな。
お礼
anmochiさん ありがとうございます. anmochiさんのやり方も大変参考になりました.勉強不足ですいませんでした。
- koko_u_
- ベストアンサー率18% (459/2509)
> Sconst(){ >x=10; >y=30; >z=5; >} どうして Sconst は x, y, z が各々 10, 30, 5 であると「知っている」のですか? それが最も大きな問題だと思います。
補足
それぞれの初期値を与えてるんですね
お礼
phoenix343さん ありがとうございます.私最初したかったのはphoenix343さんが書いてくださったものです. printを後ろに移動しました a2,a3が余計でした a1.xは使えないですね。。(私のやったのでは) もう一回自分で整理してみます. 大変助かりました.本当にありがとうございます.