- ベストアンサー
メインメソッドのstatic
javaでstaticは静的という意味があると思うのですがメインメソッドにも使われていますよね? public static void main(String[] args) publicはどこからでもアクセスできるという意味だったと思うのですが メインメソッドにstaticがついている意味などはあるのでしょうか? 素朴な疑問です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
関数にstaticが付いている場合は「インスタンスを作成しなくても何時でも使える関数」になります。 関数にpublicが付いている場合は「インスタンスが作成済みである事が前提で、どこからでも使える関数」になります。 関数にstaticが付いている場合は「インスタンスを作成しなくても何時でも使える関数」になります。 関数にpublicとstaticが付いている場合は「インスタンスを作成しなくても何時でも、どこからでも使える関数」になります。 つまり「何時でも何処からでも使える常駐関数」と言う意味になります。その為「同一プロジェクト中には1つしか存在できない」と言う制限があります。
その他の回答 (3)
- amanojaku1
- ベストアンサー率54% (265/488)
>回答No.3 amanojaku1 >ちなみに下記「main」が呼ばれる時は、そのクラスは まだインスタンス化してないと言う事です。 >>public static void main(String[] args) なぜ「main」メソッドにstaticが付与されてるのかと言うと「main」メソッドが呼ばれる時は、そのクラスは まだインスタンス化されてないので、「main」メソッドにstaticを付与しなければ「main」メソッドを呼べないと言う事です。
- amanojaku1
- ベストアンサー率54% (265/488)
chie65535さんの説明を分かりやすく言うと まず、クラスをインスタンス化しないと通常のメソッドは呼べません。 しかし、それでは困る場合もあります、クラスをインスタンス化しないで呼べるメソッドが必要な場合があります。 メソッドにstaticを付与すると、クラスをインスタンス化しないで呼べるメソッドになります。 「クラス、インスタンス」の簡略な添付画像で説明すると、メソッドにstaticを付与した場合のデメリットとして、(あくまでもイメージ的な説明として)クラス定義のメソッド(添付画像の左側のメソッド)を呼んでるような感じになります(あくまでもイメージ的な説明)。 staticが付与されたメソッドはstaticが付与されたプロパティー(変数)にしかアクセスできません、(あくまでもイメージ的な説明として)クラス定義のプロパティー(変数)(添付画像の左側のプロパティー(変数)にしかアクセスできません。 つまり(添付画像の右側の)インスタンスのプロパティー(変数)にアクセスできないと言うデメリットがあります。 ちなみに下記「main」が呼ばれる時は、そのクラスは まだインスタンス化してないと言う事です。 >public static void main(String[] args)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
因みに。 メインメソッドのmain関数は「スタートアップルーチンから自動的に呼ばれる」ので「インスタンスを作成していなくても呼び出し可能」になっている必要があります。つまり「staticでなければならない」のです。 また「スタートアップルーチンとmain関数があるクラスは、異なるクラス」なので「クラスを跨いで何処からでも呼び出し可能」になっている必要があります。つまり「publicでなければならない」のです。