2016-11-08 10 views
-1

私は静的メソッドを呼び出すことができないオブジェクトを読みました...しかし、以下のコードmmオブジェクトはpublic static void main1(String args[]){} staticメソッドを呼び出して出力を表示しています。なぜ誰かがそれを説明できますか?私は上記のコードを実行する実行すると私は警告classname.staticMethod();に静的メソッドのアクセスを変更するには、いずれか、またはmain1() からstatic修飾子を削除するメッセージしかし、まだ必要な出力を得るオブジェクトによる静的メソッドの呼び出し...!

public class Mainmultiple{ 
    public static void main(String args[]) 
    { 
     System.out.println("hello"); 
     Mainmultiple mm = new Mainmultiple(); 
     mm.main1(args);//here object mm is calling static main1 method..?? 
    } 
    public static void main1(String args[]){ 

     System.out.println("Bye"); 
    } 
} 

まだdisplayed..so取得説明してくださいこのアプローチの働き

+0

これは(これはJavaの可能性が高い)プログラミング言語ですが、それはタグとして追加する重要な情報ではないでしょうか? – Xorifelse

+0

@ Xorifelse yeahそのJava ...追加していないと申し訳ありません。指摘してくれてありがとうございます。 –

+0

あなたはこのナンセンスをどこで読んでいますか? – EJP

答えて

0

私たちは、そのクラスのクラス名とそのクラスのオブジェクトを使用して静的メソッドにアクセスできます。 オブジェクトを作成するクラス(その静的メソッドを呼び出す)のオブジェクトを作成するときにClassLoaderが.classファイルをMethod領域のJVMメモリにロードするため(jvmメモリ内でClassオブジェクトを作成して保存します)。したがって、オブジェクトを作成する前に、クラスを理解することができます。オブジェクトを作成すると、オブジェクトはそのメモリに関連付けられて作成されます。したがって、オブジェクトを使用して静的メソッドに簡単にアクセスできます。 あなたはクラスの参照のo/pに気付いたことがありますか?

For ex A is a class 
class A{ 
....... 
....... 
} 
A a1=new A(); 
s.o.p(a1); 

O/Pは、そのハッシュコードでthis- @の12f2312 二つの部分のようなものであるが(A、12f2321)一つはクラスを表し、他方はオブジェクトを表しています。だから私たちはオブジェクトを使用して静的メソッドにアクセスすることができます

+0

あなたはクラスの参照のO/Pを詳しく説明できますか? –

+0

[ここ](http://www.javatpoint.com/static-keyword-in-java) mainメソッドがなぜ静的なのかという疑問です。質問を読むことによって、私は疑いがありますが、まずjvmがどのようにオブジェクトを作成してmain()を呼び出すのか疑問に思っています。メソッドを使用すると、最終的に余分なメモリ割り当てが行われます。 –

+0

@shashimishraそれは約3つの余分な質問ですが、 'main()'が静的であるという事実は、JVMが最初にオブジェクトを作成する必要性を排除します。 – EJP

関連する問題