• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オブジェクトの記述(初歩的な質問です))

JAVA初心者がオブジェクトの記述について質問

このQ&Aのポイント
  • JAVA初心者がオブジェクトの記述について質問しています。記述方法を試している中でエラーメッセージが出たり、出なかったりする現象に疑問を抱いています。
  • クラスの宣言やインスタンスの生成について、いくつかの例を挙げて説明しています。特に、main関数の中での記述方法について疑問を持っています。
  • C言語の経験からすると、エラーメッセージが出るべき場所で出ないなど、予想と異なる状況が生じていることに戸惑っています。理由を教えてください。

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

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

> 例1と例2は{}の中を「1行で書くか?2行で書くか?」 > の「書式の違い」だけだ、と思うのですが。 「『書式の違い』だけ」ではありません。 例1はaikoという名前のGirl型フィールドを定義し、その後でaikoに生成したGirlインスタンスの代入という処理を行おうとしています。しかし、例1の箇所では定義はできても処理は行えないためコンパイルエラーとなります。 その一方、例2はaikoという名前のGirl型フィールドを、Girl型インスタンスを生成して初期値とすることを含めて定義しています。実際にGirlインスタンスが生成されるのはSample15インスタンスを生成するときです。

No51
質問者

お礼

(1)「定義はしているが、メソッド内では無いので、代入処理は行えない」 (2)「初期値することを含めて、定義している」 こんな感じの理解でいいのでしょうか? ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

「<identifier> がありません」というエラーメッセージが出ました。 と書かれていますが, エラーメッセージには「どの行の」「どの辺に」エラーがあったのかを示すマーカもついているはずです. エラーは何行目のどの辺に出ていますか? それは本当にこの質問に挙げているところですか?

No51
質問者

お礼

その辺は何度も確認しました。 「<identifier> がありません、のエラーメッセージに惑わされたようです。 ありがとうございました。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

C言語の学習経験がおありということですので、C言語の場合で以下の2つのコードの記述が可能かを考えてみてください。そうすれば例1のケースがエラーになっても不思議ではないことに納得がいくと思います。 (1) int g_value; g_value = 42; /* int g_value = 42; は問題ない */ (2) struct Sample15C { int value; value = 42; };

No51
質問者

お礼

ありがとうございます。 Tabが全部、消えてしまって、非常に見ずらいですね。 まず、書き直してみます。 例1: class Sample15/* × */ { Girl aiko ; aiko = new Girl() ; } 例2: class Sample15/* ○ */ { Girl aiko = new Girl() ; } 例1と例2は{}の中を「1行で書くか?2行で書くか?」 の「書式の違い」だけだ、と思うのですが。 しかし、それで結果が変わってしまうのは、 struct Sample15 { int i ; i = 0 ; } がNGなのに、 struct Sample15 { int i = 0 ; } なら、コンパイルを通ってしまうような「文法的な矛盾」を感じるのですが。

関連するQ&A