Javaのmainメソッドでpublicをprivateに変えるとどうなる?動作の違いを解説
Javaプログラムのエントリーポイントであるmainメソッドには、通常public修飾子が付けられます。では、このpublicをprivateに置き換えると、プログラムはどのような挙動を示すのでしょうか。本記事では、両者の違いを具体的なコード例とともにわかりやすく解説します。
mainメソッドに「public」を使用した場合
まずは、標準的な書き方であるpublic static void mainを使用した例を見てみましょう。
コード例
public class Demo{
public static void main(String args[]){
System.out.println("This is a sample only");
}
}
実行結果
This is a sample only
この例では、Demoというクラスの中にpublicとして宣言されたmainメソッドが定義されています。mainメソッド内にはコンソールへメッセージを出力する処理が含まれており、JVM(Java Virtual Machine)は外部からこのメソッドにアクセスできるため、プログラムは正常にコンパイル・実行され、メッセージがコンソールに表示されます。
mainメソッドをpublicにするのは、JVMがプログラム起動時にクラスの外部からこのメソッドを呼び出す必要があるためです。これがJavaの規約として定められています。
「public」を「private」に置き換えた場合
次に、mainメソッドのアクセス修飾子をprivateに変更した場合の挙動を確認します。
コード例
public class Demo{
private static void main(String args[]){
System.out.println("This is a sample only");
}
}
実行結果
Error: Main method not found in class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
この例では、Demoクラス内のmainメソッドがpublicではなくprivateとして宣言されています。その結果、プログラムは正常に実行されず、エラーが発生します。
エラーメッセージには「Main method not found(mainメソッドが見つかりません)」と表示されます。これは、mainメソッド自体は存在しているものの、private宣言によってクラス外部からのアクセスが禁止されているため、JVMがエントリーポイントとして認識・呼び出せないことが原因です。
まとめ
- publicの場合: JVMがクラス外部から
mainメソッドにアクセスでき、プログラムが正常に実行される。 - privateの場合: メソッドは存在しても外部からアクセスできないため、JVMは
mainメソッドを見つけられず、実行時エラーとなる。
このように、Javaにおいてmainメソッドをpublic static void main(String[] args)のシグネチャで宣言することは単なる慣習ではなく、JVMがプログラムを起動するための必須条件となっています。独自のアプリケーションを作成する際は、必ずこの規約に従ってmainメソッドを定義しましょう。
-
EclipseでJavaFXをセットアップする方法|Maven依存関係とJARの手動追加を解説
EclipseでJavaFXアプリケーションを開発するためには、あらかじめ環境構築が必要です。この記事では、Maven依存関係を利用する方法と、必要なJARファイルを手動で追加する方法という2つのアプローチをわかりやすく解説します。事前準備セットアップを始める前に、お使いのシステムにEclipseとJava(JDK)が正常にインストールされていることを確認してください。これらが揃っていれば、どちらの方法でもスムーズにJavaFX環境を構築できます。方法1:Maven依存関係を使ったセットアップMavenを利用してJavaFX環境を構築する場合は、まずEclipseで通常のJavaプロジェクトを
-
Javaにおけるダウンキャストの基本とデータ損失の注意点
Javaでは、変数をより小さい範囲のデータ型へ「ダウンキャスト(縮小変換)」することができます。ただし、キャストには明示的な型変換が必要であり、場合によってはデータの損失が発生する点に注意が必要です。ダウンキャストとはダウンキャストとは、int型からbyte型のように、表現できる値の範囲が狭い型へ変換することです。Javaでは縮小変換は自動的に行われないため、キャスト演算子 () を使って明示的に指定する必要があります。変換後の値が代入先の型の範囲に収まらない場合、上位ビットが切り捨てられ、意図しない値になってしまうことがあります。サンプルコードpublic class Tester {