2013-09-28 75 views
1

我相信我明白了什麼是構造函數,但對我來說,它似乎只是用於將信息傳遞給另一個類中的方法。那麼爲什麼不直接調用一個方法並提供一個參數呢?我有這個錯誤嗎?構造函數和傳遞參數有什麼區別?

+1

你知道對象是什麼嗎?構造函數用於創建對象。 –

+0

你也可以麻煩閱讀:http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html我相信這是很好的解釋 – pedromss

+0

是的我相信我明白什麼是對象,我也認爲我得到他們現在使用的東西。這是我應該使用它的一個很好的例子嗎? http://pastebin.com/N0YFzQtE –

回答

2

構造函數用於創建對象,而不是普通的方法。無論何時使用new創建對象,實際上都會調用構造函數。例如:

new MyClass(); //here MyClass() is a constructor with no params 

Note

構造函數聲明的樣子方法聲明,除了 他們所使用的類的名稱,並沒有返回類型

+0

是的,我得到這個,但我所說的是他們ultimatley用於傳遞參數到一個類,然後可以使用該特定類中的所有方法? –

+0

@ChrisLondon如何在不創建對象的情況下設置成員變量的值?如果你有所有的靜態成員,那麼你可以使用簡單的方法。 –

+0

@ChrisLondon:那些「參數」通常最終定義了對象的*狀態*,即「它的本質」或「它是什麼」。他們*可以被認爲是「所有方法的參數」,但這是一個非常狹隘的觀點。 –

0

如果我的理解right:

構造函數總是被調用的,所以這些屬性必須通過。如果您通過方法傳遞此信息,則不必傳遞它們,因此它們可能會丟失。

+0

是的,類似的東西,除非你有一個空的構造函數或一個沒有你需要的對象函數的所有參數的構造函數。但是你應該以某種方式處理這些情況,或者不允許構造函數缺少必需的參數。 –

0

無論何時傳遞參數,構造函數都用於初始化對象的新實例。

在構造函數中擁有參數只是一種方法,可以很容易地在對象初始化過程中設置一些初始屬性,對象最可能需要這些初始屬性才能按預期方式工作。但是,如果這些屬性不需要爲實例對象的正確操作進行初始化,那麼更有意義的是不將它們傳遞給構造函數,而是讓其他任何時間通過它們的設置器你需要。

+0

構造函數用於*初始化*對象,在調用構造函數之前創建*。 –

+0

對,謝謝:) – ssantos

相關問題