• ベストアンサー

javaのソースとclassファイルの単位について

最近JAVAの勉強を始めました。 基礎的なことで恐縮ですが、JAVAのコンパイル単位を知りたいのですが。 一つの*.javaファイルについては、必ず一つのclassファイルができるんでしょうか? 一つの*.javaファイルから、複数個のclassファイルができたり、複数の*.javaファイルから 一つのclassファイルができたりはしないんでしょうか? まだ、一つの*.javaから一つのclassファイルを作ったことしかないので、 申し訳ないですが、どなたか教えてください。よろしくお願いします。

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

  • ベストアンサー
  • gooken
  • ベストアンサー率25% (34/132)
回答No.1

基本的にファイルには関係なく ソースに有るclassごとに *.class のファイルができます。 なので、一つのjavaファイルの中に複数のクラス(インナークラスも含め) が有ればその数分classファイルができます。 ただこれらのファイルを jarファイルにまとめてしまえば *.jar のファイル一つにもになりますが。 ファイル内に class クラス名1{ } class クラス名2{ } があれば クラス名1.class と クラス名2.class のファイルが出来ます。

shigeki-yy
質問者

お礼

おお。本当っだっ。へぇぇ。 ありがとうございます。とても助かりました。

その他の回答 (2)

  • stardust
  • ベストアンサー率44% (8/18)
回答No.3

>「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。→つまり1対1になる。」 ということですね。 ▼ その通りです。shigeki-yy さんのおっしゃる通りですね。   私が曖昧な書き方をしていたもので、すいませんでした。 > ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。 ▼ では。javaのお勉強、頑張ってくださいね!

shigeki-yy
質問者

お礼

わざわざありがとうございました。 VBにすっかり慣れてしまっているので、すべてのOS上で動くことをコンセプトとしたJAVAは知れば知るほど魅力的です。  今は、仕事でJAVAで行っている開発資産を管理することになるので、ぼちぼちと勉強しているところです。せっかく始めたので、いずれはiアプリを作ることが目標です。 今後ともよろしくお願いします。

  • stardust
  • ベストアンサー率44% (8/18)
回答No.2

> 一つの*.javaファイルについては、必ず一つのclassファイルができるんでしょうか? > 一つの*.javaファイルから、複数個のclassファイルができたり、 これに関しては先のgookenさんの答えておられる通りです。 ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。 また、インナークラスの場合には (MyClassという名前のクラス内で定義されたインナークラスの場合) MyClass$1.class, MyClass$2.class ... というような名前になりますね。 > 複数の*.javaファイルから一つのclassファイルができたりはしないんでしょうか? こちらはできないはずです。

shigeki-yy
質問者

お礼

本当だ。 public class Test44 { * * } public class Test45 { * * } で、コンパイルすると、 「Test44.java:21: クラス Test45 は public であり、ファイル Test45.java  で宣言しなければなりません。  public class Test45 {   ^              」 というメッセージが出ます。 「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。→つまり1対1になる。」 ということですね。 とても助かりました。ありがとうございます。