プロが教えるわが家の防犯対策術!

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

まだ、一つの*.javaから一つのclassファイルを作ったことしかないので、
申し訳ないですが、どなたか教えてください。よろしくお願いします。

A 回答 (3件)

基本的にファイルには関係なく ソースに有るclassごとに *.class


のファイルができます。
なので、一つのjavaファイルの中に複数のクラス(インナークラスも含め)
が有ればその数分classファイルができます。

ただこれらのファイルを jarファイルにまとめてしまえば *.jar
のファイル一つにもになりますが。
ファイル内に
class クラス名1{
}
class クラス名2{
}

があれば クラス名1.class と クラス名2.class
のファイルが出来ます。
    • good
    • 1
この回答へのお礼

おお。本当っだっ。へぇぇ。

ありがとうございます。とても助かりました。

お礼日時:2001/04/07 01:58

>「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。

→つまり1対1になる。」
ということですね。

▼ その通りです。shigeki-yy さんのおっしゃる通りですね。
  私が曖昧な書き方をしていたもので、すいませんでした。

> ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。

▼ では。javaのお勉強、頑張ってくださいね!
    • good
    • 0
この回答へのお礼

わざわざありがとうございました。

VBにすっかり慣れてしまっているので、すべてのOS上で動くことをコンセプトとしたJAVAは知れば知るほど魅力的です。

 今は、仕事でJAVAで行っている開発資産を管理することになるので、ぼちぼちと勉強しているところです。せっかく始めたので、いずれはiアプリを作ることが目標です。

今後ともよろしくお願いします。

お礼日時:2001/04/08 00:58

> 一つの*.javaファイルについては、必ず一つのclassファイルができるんでしょうか?


> 一つの*.javaファイルから、複数個のclassファイルができたり、

これに関しては先のgookenさんの答えておられる通りです。
ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。

また、インナークラスの場合には
(MyClassという名前のクラス内で定義されたインナークラスの場合)
MyClass$1.class, MyClass$2.class ...
というような名前になりますね。


> 複数の*.javaファイルから一つのclassファイルができたりはしないんでしょうか?

こちらはできないはずです。
    • good
    • 0
この回答へのお礼

本当だ。

public class Test44 {
*
*
}
public class Test45 {
*
*
}

で、コンパイルすると、
「Test44.java:21: クラス Test45 は public であり、ファイル Test45.java  で宣言しなければなりません。
 public class Test45 {
  ^              」

というメッセージが出ます。

「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。→つまり1対1になる。」
ということですね。

とても助かりました。ありがとうございます。

お礼日時:2001/04/07 14:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!