5.8構(gòu)造函數(shù)(Constructor)
每創(chuàng)建一個類的實例都去初始化它的所有變量是乏味的。如果一個對象在被創(chuàng)建時就完成了所有的初始工作,將是簡單的和簡潔的。因此,Java在類里提?copy了一個特殊的成員函數(shù),叫做構(gòu)造函數(shù)(Constructor?copy;。一個構(gòu)造函數(shù)是對象被創(chuàng)建時初始對象的成員函數(shù)。它具有和它所在的類完全一樣的名字。一?copy;定義好一個構(gòu)造函數(shù),創(chuàng)建對象時就會自動調(diào)用它。構(gòu)造函數(shù)沒有返回類型,即使是void類型也沒有。這是因為一個類的構(gòu)造函數(shù)的返回值的類型就是這個類本身。構(gòu)造函數(shù)的任務(wù)是初始一個對象的內(nèi)部狀態(tài),所以用new操作符創(chuàng)建一個實例后,立刻就會得到一個清楚、可用的對象。下面這個例子里,用構(gòu)造函數(shù)取代了成員函數(shù)init。
classUniversity{Stringname,city;University(Stringname,Stringcity)
{this.name=name;this.city=city;}}classUniversityCreate{publicstaticvoidmain(Stringargs[]){Universityu=newUniversity(\"北?copy;大學(xué)\",\"北?copy;\");System.out.println(\"大學(xué):\"+u.name+\"城市:\"+u.city);}}new語句中類名后的參數(shù)是傳給構(gòu)造函數(shù)的。
5.9成員函數(shù)重載
對于幾個意義相近的成員函數(shù),有時使用相同的名字便于理解。因此,Java語言實現(xiàn)了成員函數(shù)重載,即可以創(chuàng)建幾個名字相同、參數(shù)不同的成員函數(shù)。成員函數(shù)重載提?copy;了Java的多態(tài)行為。下面的例子用到了重載。classUniversity{Stringname,city;University(Stringname,Stringcity){this.name=name;this.city=city;}University(){name=\"北?copy;大學(xué)\";city=\"北?copy;\";}}
classUniversityCreateAlt{publicstaticvoidmain(Stringargs[]){Universityu=newUniversity();System.out.println(\"大學(xué):\"+u.name+\"城市:\"+u.city);}}
這個例子創(chuàng)建了一個University對象,調(diào)用了第二個構(gòu)造函數(shù)。下面是它的運行結(jié)果。
C:\\>javaUniversityCreateAlt大學(xué):北?copy;大學(xué)城市:北?copy;一個構(gòu)造函數(shù)可以調(diào)用另一個構(gòu)造函數(shù)來創(chuàng)建實例。例如:
classUniversity{Stringname,city;University(Stringname,Stringcity)
{this.name=name;this.city=city;}University(){this(\"北?copy;大學(xué)\",\"北?copy;\");}}
第二個構(gòu)造函數(shù)調(diào)用了第一個構(gòu)造函數(shù)來完成實例的初始化。你也可以用重載來創(chuàng)建一般的成員函數(shù)。下面這個例子里有University類的兩個版本的samecity成員函數(shù)。samecity判斷一個大學(xué)是否在一個城市里或一個大學(xué)和另一個大學(xué)是否在同一個城市里。一個成員函數(shù)用city作參數(shù),另一個用University對象作參數(shù)。
classUniversity{Stringname,city;University(Stringname,Stringcity)
{this.name=name;this.city=city;}booleansamecity(Stringcity){if
(city.equals(this.city))returntrue;elsereturnfalse;}boolean
samecity(Universityu){returnsamecity(u.city);}}
classUniversityCity{publicstaticvoidmain(Stringargs[]){String
city=\"上海\";Universityu1=newUniversity(\"北?copy;大學(xué)\",\"
北?copy;\");Universityu2=newUniversity(\"清華大學(xué)\",\"北?copy;\");
System.out.println(\"u1=\"+u1.name+\",\"+u1.city);
System.out.println(\"u2=\"+u2.name+\",\"+u2.city);
System.out.println(\"city=\"+city);
System.out.println(\"u1.samecity(u2)=\"+u1.samecity(u2));
System.out.println(\"u1.samecity(city)=\"+u1.samecity(city));}}
下面是該程序的運行結(jié)果。
C:\\>javaUniversityCityu1=北?copy;大學(xué),北?copy;u2=清華大學(xué),北?copy;city=上海u1.samecity(u2)=trueu1.samecity(city)=false
2015年全國職稱計算機考試教材(2007模 .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 | |
全國職稱計算機考試速成過關(guān)系列套裝:W .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |