ソースファイル名とpublic

javaでは、好きなソースファイル名を勝手に付けたり、途中でファイル名を変更したりすると コンパイルエラーになることがあります。

ほとんどのjavaコンパイラでは、publicクラスのクラス名と、ファイル名(拡張子を除く) を同じにしなければなりません。大文字と小文字が異なっていてもいけません。

よって、1つのファイルにファイル名は当然1つしかないので、1つのソースファイルにはpublicクラスは 1つしか含められません。

HogeA.java
1:
2:
3:
4:
5:
6:
public class HogeA{   // OK
  static public void main(String args[])
  {
    System.out.println("HogeA");
  }
}
 これは問題ありません。

HogeA2.java
1:
2:
3:
4:
5:
6:
public class HogeA{   // エラー
  static public void main(String args[])
  {
    System.out.println("HogeA");
  }
}
 これは、publicクラス名がHogeAなのに対し、ファイル名がHogeA2.javaなので、コンパイルエラーとなります。

HogeB.java
1:
2:
3:
4:
5:
6:
class HogeB2{   // OK
  static public void main(String args[])
  {
    System.out.println("HogeB");
  }
}
 HogeB2クラスはpublicクラスではないので、ファイル名と違っても問題ありません。



  < 問題 >

HogeC2.java
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public class HogeC{   
  static public void main(String args[])
  {
    System.out.println("HogeC");
  }
}

public class HogeC2{
  int x=1;
}
 どこを変えるとコンパイルできるようになるでしょう。
  A. 1行目のpublicを取り除く
  B. 8行目のpublicを取り除く
  C. ファイル名を HogeC2.java に変える
  D. ファイル名を HogeC3.java に変える
  E. このままでもコンパイルできるので、変更の必要なはい   


↑BACK  ←PREV  NEXT→