2013-10-17 54 views
1

這是代碼:Java中的主要類。什麼被稱爲?

public class Main { 
    public static void main(String[] args) { 
     new Picture().edit(); 
    } 
} 

爲什麼有括號圖片的盈?

有一個圖片類,它有一個編輯方法,但圖片類也有一個圖片方法。

這是怎麼回事?

正在創建Picture類,它調用其圖片方法,同時也調用編輯方法?

感謝

+0

這是基於語法.. java語法。有一個Picture的構造函數不需要任何參數。你會看到很多這樣的代碼。例如,我可以說(新的String())。toString() – Coffee

+1

這可以通過任何Java教程來解釋,如果你不熟悉英文術語,'Picture'有括號,而不是括號(括號在'字符串「),它們在'Picture'之後,而不是之前。 – chrylis

+0

請查看更多Java材料,以獲得更多信息 – Coffee

回答

2

new Picture()正在實例化一個新的圖片對象,它將調用它的構造函數。它是.edit();是它立即調用的方法。

由於edit()不是靜態的,它需要從實例化的類運行。

這是打字也成爲

Picture pic = new Picture(); 
pic.edit(); 

唯一的區別是pic可重複使用以後不必實例化,每次構造一個新Picture對象。

通過new Picture().edit();調用它可以做一次性短暫的做法,因爲垃圾收集在完成執行後會很小心。

+0

感謝您的回覆,在考慮其餘代碼後,它們都有意義。這個特別的迴應是我的最愛。 – user2891805

+0

不客氣! – redFIVE

+1

你的語言不準確,令人困惑。雖然我同意代碼'new Picture()'導致實例化一個新對象,您似乎建議新的圖片對象將調用它自己的構造函數。嚴格地說,構造函數創建新對象的初始狀態,並且在構造函數完成執行之前說出存在於一致狀態中的對象是不合適的。因此,「一個新對象不能調用它自己的構造函數」。 – scottb

4

所有你在這裏做的是通過參數少(也許是默認)構造函數創建一個Picture實例。隨後,您對剛剛創建的實例調用edit()方法。由於您沒有在任何地方存儲Picture實例,因此在方法調用完成後,它可以直接進行垃圾回收。

對於所有實用的目的,你可以寫你的代碼

Picture picture = new Picture(); 

picture.edit(); 

注意,一個Picture方法未在任何地方片段參與。 constructorsmethods之間有區別。


爲什麼有括號圖片的盈?

這只是Java中對象創建的語法。很明顯,如果Picture構造採取了一些說法,那麼我們肯定會需要這些括號:

new Picture(someArg) 

但事實上,我們甚至需要支架以0參數的構造是一個純粹的語言設計決策。我相信像Scala這樣的語言(它也可以在JVM上運行),不用使用括號就可以離開。

2

您正在調用Picture類的構造函數,然後調用edit()函數。如果有一個叫做Picture的函數,它從來沒有被調用過。你可以打電話給它,如果想要。

Picture pic = new Picture(); 
pic.edit(); // call edit function 

Picture pic = new Picture(); 
pic.Picture(); // call picture function 
1

這是構造函數,它創建一個新的Picture對象。如果有構造函數的任何參數,他們會進入括號內。

new Picture() 

這裏我們所說的新創建的圖片對象的編輯方法:

new Picture().edit(); 

由於圖片對象是不保存它是繼丟失。如果你只想做這個方法調用,那很可能。

相關問題