2017-05-26 53 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

當您發現自己陷入洞中時,請停止挖掘。當您撥打新電話時,您確實有A的實例。你調用它的show()方法。沒有參考指向該實例,因此當該方法退出時它超出範圍。你的方法是正確的;你對Java的理解不是。 – duffymo

回答

0

當您編寫new A()時,會得到一個新對象A。這就是如何定義new

因爲您告訴編譯器您需要一個類型爲A的新對象,即使您未將其指定給變量,它也已知道該類型。

相關問題