Developer

【はじめてのJava】複数のclassが書かれたソースコード【コラム】
2020.09.21
Lv1

【はじめてのJava】複数のclassが書かれたソースコード【コラム】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


コラム

コラムでは、本編の補足などをしていきます。

この記事では、Javaのプログラム作成時の補足を紹介します。

Javaのプログラム作成時の記事はこちら。


目次


コラム:複数のclassが書かれたソースコード

本編で作成したソースコード「Sample.java」は以下の通りでした。

public class Sample{
  public static void main(String[] args){
    System.out.println("Hello World!");
  }
}

クラスファイルの解説でも書いた通り、class クラス名 { }となっている部分がコンパイルで「クラス名.class」に変換されます。

では、もしも1つのソースコード内にclass クラス名 { }となっている部分が2つ以上あった場合はどうなるのでしょうか。

例えば、Sample.javaに次のようにclass Sample2 { } も書かれていたとします。

public class Sample{
  public static void main(String[] args){
    System.out.println("Hello World!");
  }
}
class Sample2 { }

Sample2の方は{ }の中に何も書かれていませんが、class クラス名{ } という形は守られています。

このソースコードをコンパイルすると、「Sample.class」と「Sample2.class」という、2つのクラスファイルが生成されます。

↓コマンドプロンプト↓

↓エクスプローラー↓

このように、1つのソースコードの中に複数のclass クラス名{ }という形があった場合、コンパイル時にはその分だけクラスファイルが生成されます。


コラム:複数のpublic classが書かれたソースコード

1つのソースコードに2つ以上のclass クラス名{ }という形があった場合、コンパイル時にはその分だけクラスファイルが生成されることが分かりました。

では、1つのソースコード内に2つ以上の public  class クラス名{ }という形があった場合はどうなるのでしょうか。

例えば、Sample.javaに、public class Sample2{ }も書かれていたとします。先ほどとの違いは、Sample2の方にもpublicがついていることだけです。

public class Sample{
  public static void main(String[] args){
    System.out.println("Hello World!");
  }
}
public class Sample2 { }

先ほど同様うまくいきそうですが、この場合はコンパイルに失敗します。

これはコラム:ファイル名とpublic classで説明した通り、 クラス名の前にpublicを付けてよいのはファイル名とクラス名が一致するときだけ  というルールがあるためです。


はじめてのJavaシリーズの記事一覧はこちら
シリーズ全記事一覧
環境構築編
プログラムの作り方編
データ型と変数編


java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら