2017-05-26 7 views
-3

これはなぜ有効ですか? オブジェクトが作成されている行と同じ行にメソッドを呼び出し、そのメソッドを呼び出すオブジェクトを参照する参照変数を個別に作成しません。オブジェクトが作成されている行と同じ行にメソッドを呼び出し、呼び出すオブジェクトを参照する参照変数を作成しない

class A { 

    public void show() { 
     System.out.println("Hello Everyone"); 
    } 
} 

class B { 

    public static void main(String args[]) { 
     new A().show();/* at this point how does compiler know which show() method 
       to run as I have not created any reference variable 
       pointing to the object of class A, it could have run 
        class B's show() or simply have given an error */ 
    } 

    public void show() { 
     System.out.println("Hello Everyone, this is java"); 
    } 
} 

私は決勝戦を手伝ってください。

+0

newを呼び出したときにクラスAのインスタンスを作成しました。 show()メソッドが呼び出されました。私はあなたが残りの部分で何を考えているのか分かりません。相続思考のヒントがありますが、拡張はありません。 – duffymo

+0

@ duffymo - 実行時にオブジェクトが作成されるため、メソッドは実行時に動的に呼び出されますが、タイプAの参照がないので、コンパイラはメソッドの呼び出しが正しいと判断します。 ?明確にしてください - @ duffymo –

+0

あなたが穴の中にいるときは、掘りをやめてください。あなたはnewを呼び出すときにAのインスタンスを持っています。 show()メソッドを呼び出します。そのインスタンスを指す参照はないので、メソッドが終了するとスコープから外れます。あなたの方法は正しいです。あなたのJavaの理解はできません。 – duffymo

答えて

0

new A()と書くと、タイプAの新しいオブジェクトが得られます。それで、newが定義されています。

タイプAの新しいオブジェクトが必要であることをコンパイラに伝えたので、変数に割り当てていない場合でも、型はすでに認識されています。

関連する問題