5.10繼承
第二個(gè)基本的面向?qū)ο髾C(jī)制是繼承。繼承是關(guān)于有層次關(guān)系的類?reg;間的概念。一個(gè)類的后代可以繼承它的祖先的所有變量和成員函數(shù),就象創(chuàng)建自己的一樣。一個(gè)類的直接父親叫做它的超類(superclass?copy;。一?copy;你創(chuàng)建了一個(gè)象University這樣的類,創(chuàng)建它的子類是很簡(jiǎn)單的。一個(gè)類的子類是它的繼承了實(shí)例變量和成員函數(shù)的特殊的版本。在這個(gè)例子里,我們把University類派生為含有叫做country的第三個(gè)元素的子類。
classUniversityWorldextendsUniversity{Stringcountry;UniversityWorld(Stringname,Stringcity,Stringcountry){this.name=name;this.city=city;this.country=country;}UniversityWorld(){this(\"北?copy;大學(xué)\",\"北?copy;\",\"中國(guó)\");}}
關(guān)鍵詞extends用來表示我們要?jiǎng)?chuàng)建University的子類。name和city不需再在UniversityWorld中進(jìn)行聲明,因?yàn)樗鼈兪菑腢niversity中繼承的。Java允許在UniversityWorld中聲明變量name和city,但這會(huì)隱藏University中的name和city,是與使用子類的目的相矛盾的,應(yīng)當(dāng)避免。在UniversityWorld的實(shí)例中name、city和country的地位是一樣的。
5.11super在UniversityWorld的例子里,有一段代碼和它的超類University的重復(fù),這段代碼是初始化name和city的,this.name=name;this.city=city;就象在University例子中用this指向第一個(gè)構(gòu)造函數(shù)一樣,在Java里有另一個(gè)變量叫做super,它直接指向超類的構(gòu)造函數(shù)。下面這個(gè)例子用super來初始化變量name和city,然后打印出這個(gè)對(duì)象的內(nèi)容。
classUniversityWorldextendsUniversity{Stringcountry;UniversityWorld(Stringname,Stringcity,Stringcountry){super(name,city);//調(diào)用了構(gòu)造函數(shù)University(name,city)this.country=country;}publicstaticvoidmain(Stringargs[]){UniversityWorldu=newUniversityWorld(\"北?copy;大學(xué)\",\"北?copy;\",\"中國(guó)\");System.out.println(\"大學(xué):\"+u.name+\"城市:\"+u.city+\"國(guó)家:\"+u.country);}}
下面是運(yùn)行結(jié)果。C:\\>javaUniversityWorld大學(xué):北?copy;大學(xué)城市:北?copy;國(guó)家:中國(guó)
![]() | ![]() .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 |
![]() | ![]() .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書籍 |