關燈 巨大 直達底部
親,雙擊螢幕即可自動滾動
第6部分

ersity中繼承的。Java允許在UniversityWorld中宣告變數name和city,但這會隱藏University中的name和city,是與使用子類的目的相矛盾的,應當避免。在UniversityWorld的例項中name、city和country的地位是一樣的。

5。11super在UniversityWorld的例子裡,有一段程式碼和它的超類University的重複,這段程式碼是初始化name和city的,this。name=name;this。city=city;就象在University例子中用this指向第一個建構函式一樣,在Java裡有另一個變數叫做super,它直接指向超類的建構函式。下面這個例子用super來初始化變數name和city,然後列印出這個物件的內容。

classUniversityWorldextendsUniversity{Stringcountry;UniversityWorld(Stringname;Stringcity;Stringcountry){super(name;city);//呼叫了建構函式University(name;city)this。country=country;}publicstaticvoidmain(Stringargs''){UniversityWorldu=newUniversityWorld(”北?copy;大學”;”北?copy;”;”中國”);System。out。println(”大學:”+u。name+”城市:”+u。city+”國家:”+u。country);}}

下面是執行結果。C:》javaUniversityWorld大學:北?copy;大學城市:北?copy;國

家:中國

5。12成員函式的覆蓋

這個University的新的子類繼承了它的超類的成員函式samecity。但這個成員函式samecity判斷的是兩個城市的名字,這是不夠的,因為有可能兩個兩個名字一樣的城市屬於不同的國家,我們要用同時判斷城市和國家的成員函式來覆蓋它。下面就是實現覆蓋的例子。

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);}}

classUniversityWorldextendsUniversity{Stringcountry;

UniversityWorld(Stringname;Stringcity;Stringcountry){super(name;

city);this。country=country;}booleansamecity(Stringcity;String

country){if(city。equals(u。city)&&country。equals(u。country))return

true;elsereturnfalse;}booleansamecity(UniversityWorldother)

{returndistance(other。city;other。country);}}

classUniversityWorldCity{publicstaticvoidmain(Stringargs'')

{Stringcity=”上海”;Stringcountry=”中國”;UniversityWorldu1=

newUniversityWorld(”北?copy;大學”;”北?copy;”;”中國”);

UniversityWorl