• ベストアンサー

コンストラクタについて

これも試験問題らしくて自分でやってみましたのであってるかどうか自信なくて どなたかみてみていただけたらと思います.よろしくお願いします。 下のソースファイルをコンストラクタを用いたものに修正しなさい 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); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

・クラス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();  } }

mars2608
質問者

お礼

phoenix343さん ありがとうございます.私最初したかったのはphoenix343さんが書いてくださったものです. printを後ろに移動しました a2,a3が余計でした a1.xは使えないですね。。(私のやったのでは) もう一回自分で整理してみます. 大変助かりました.本当にありがとうございます.

その他の回答 (2)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.3

僕的にはこう。 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のタイミングで受け渡すようにしなさい、って事じゃないかな。

mars2608
質問者

お礼

anmochiさん ありがとうございます. anmochiさんのやり方も大変参考になりました.勉強不足ですいませんでした。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

> Sconst(){ >x=10; >y=30; >z=5; >} どうして Sconst は x, y, z が各々 10, 30, 5 であると「知っている」のですか? それが最も大きな問題だと思います。

mars2608
質問者

補足

それぞれの初期値を与えてるんですね

関連するQ&A