北?copy;”);System。out。println(”大學:”+u1。name+”城市:”+u1。city);system。out。println(”大學:”+u2。name+”城市:”+u2。city);}}
5。8建構函式(Constructor)
每建立一個類的例項都去初始化它的所有變數是乏味的。如果一個物件在被建立時就完成了所有的初始工作,將是簡單的和簡潔的。因此,Java在類裡提?copy了一個特殊的成員函式,叫做建構函式(Constructor?copy;。一個建構函式是物件被建立時初始物件的成員函式。它具有和它所在的類完全一樣的名字。一?copy;定義好一個建構函式,建立物件時就會自動呼叫它。建構函式沒有返回型別,即使是void型別也沒有。這是因為一個類的建構函式的返回值的型別就是這個類本身。建構函式的任務是初始一個物件的內部狀態,所以用new運算子建立一個例項後,立刻就會得到一個清楚、可用的物件。下面這個例子裡,用建構函式取代了成員函式init。
classUniversity{Stringname;city;University(Stringname;Stringcity)
{this。name=name;this。city=city;}}classUniversityCreate{publicstaticvoidmain(Stringargs''){Universityu=newUniversity(”北?copy;大學”;”北?copy;”);System。out。println(”大學:”+u。name+”城市:”+u。city);}}new語句中類名後的引數是傳給建構函式的。
5。9成員函式過載
對於幾個意義相近的成員函式,有時使用相同的名字便於理解。因此,Java語言實現了成員函式過載,即可以建立幾個名字相同、引數不同的成員函式。成員函式過載提?copy;了Java的多型行為。下面的例子用到了過載。classUniversity{Stringname;city;University(Stringname;Stringcity){this。name=name;this。city=city;}University(){name=”北?copy;大學”;city=”北?copy;”;}}
classUniversityCreateAlt{publicstaticvoidmain(Stringargs''){Universityu=newUniversity();System。out。println(”大學:”+u。name+”城市:”+u。city);}}
這個例子建立了一個University物件,呼叫了第二個建構函式。下面是它的執行結果。
C:》javaUniversityCreateAlt大學:北?copy;大學城市:北?copy;一個建構函式可以呼叫另一個建構函式來建立例項。例如:
classUniversity{Stringname;city;University(Stringname;Stringcity)
{this。name=name;this。city=city;}University(){this(”北?copy;大學”;”北?copy;”);}}
第二個建構函式呼叫了第一個建構函式來完成例項的初始化。你也可以用過載來建立一般的成員函式。下面這個例子裡有University類的兩個版本的samecity成員函式。samecity判斷一個大學是否在一個城市裡或一個大學和另一個大學是否在同一個城市裡。一個成員函式用city作引數,另一個用University物件作引數。
classUniversity{Stringname;city;University(Stringname;Stringcity)
{this。name=name;this。city=city;}booleansamecity(Stringcity){if
(city。equals(this。city))returnt