版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本章內(nèi)容
類的修飾符方法訪問控制abstract類和abstract方法P129抽象類不能被實例化,只能作為基類或父類存在
abstract方法,只允許聲明,不允許實現(xiàn),不能用final修飾如果一個類是一個abstract類的子類,必須實現(xiàn)父類的abstract方法(abstract類除外)
如果一個類中含有abstract方法,這個類必須用abstract修飾
abstract類也可以沒有abstract方法一個abstract類只關(guān)心它的子類是否具有某種功能,并不關(guān)心功能的具體行為,功能的具體行為由子類負(fù)責(zé)實現(xiàn)。abstractclassPeople{
publicabstractvoidSpeak();}classChineseextendsPeople{
publicvoidSpeak(){System.out.println("歡迎來到北京");}}classEnglishextendsPeople{
publicvoidSpeak(){System.out.println("WelcometoEngland");}}修飾符final——最終類不能被繼承
publicfinalclassTest{……}聲明類時abstract和
final不能同時使用。
方法
與函數(shù)類似(實例方法)返回數(shù)據(jù)類型方法名稱(形式參數(shù)){方法體;}例如:doubleComputeArea(){return(3.14*r*r);}voidSetHeight(doubleh){height=h;}classCone{doubler,h;voidSetRH(doublerr,doublehh){r=rr;h=hh;}doubleComputeArea(){return(3.14*r*r);}
doubleComputeVolume(){return(ComputeArea(
)*h/3.0);}}實例方法可以調(diào)用該類中的其他方法(除構(gòu)造方法)修飾符static——類方法不用實例化,類名即可訪問;
classLess{publicstaticvoidtest(){……}}classLess_test{publicstaticvoidmain(String[]args){Less.test();}}不能操縱實例變量,只能處理static屬性變量。P79publicclassTakecare{inta=90;staticfloatb=10.98f;publicstaticvoidmain(Stringargs[]){floatc=a+b;System.out.println(“c=“+c);}//main}//TakecareclassA{staticintCount=0;booleanb1=true;A(){Count++;}
staticvoidShowCount(){System.out.println("Countis:"+Count
);System.out.println(b1);}
}
修飾符abstract——抽象方法只有方法頭,沒有方法實現(xiàn);abstract方法只能定義在abstract類或接口中;abstract方法必須在子類中實現(xiàn)。是否有錯誤?
classLess1{publicabstractvoidtest();
}classLess2extendsLess1{
publicvoidtest(){……}}abstractclassLess3extendsLess1{
publicabstractvoidresult();}classLess4extendsLess3{
publicvoidresult(){……}}
修飾符final不能更改的最終方法,不能被子類重新定義。
classLess1{publicfinalvoidtest(){System.out.println(“Test1”);}}classLess2extendsLess1{publicvoidtest(){×System.out.println(“Test2”);}}示例1——抽象類目的在于為它所有的子類提供“共同的接口”;如果子類不是abstract類,則必須實現(xiàn)所有abstract方法;抽象類中可以有一般類具有的屬性和方法。
abstract圖形類abstractfloatArea()abstractvoidOutput()圓形floatArea()voidOutput()直角三角形floatArea()voidOutput()矩形floatArea()voidOutput()抽象類(部分代碼)
abstractclass圖形{publicabstractfloatArea();publicabstractvoidOutput();}class圓形extends圖形{……
publicfloatArea(){return(float)(3.14*r*r);}publicvoidOutput(){System.out.println("圓形面積"+Area());}}
class直角三角形extends圖形{……
publicfloatArea(){return(float)(0.5*a*b);}publicvoidOutput(){System.out.println("三角形面積"+Area());}}
class矩形extends圖形{……
publicfloatArea(){returna*b;}publicvoidOutput(){System.out.println("矩形面積"+Area());}}
publicclass面積{publicstaticvoidmain(String[]args){
圓形a=new圓形(1.0f);a.Output();}}示例2——抽象類
如有若干Circle,若干Rectangle,希望計算它們的總面積,普通做法是將它們分別放到兩個數(shù)組中,用兩個循環(huán),一個加法,這種做法是不漂亮的問題:
如還有其它形狀:Triangle,Elliptical等,上述方法顯得“累贅”。希望有統(tǒng)一表示,例如用一個數(shù)組s[],接受所有形狀,然后用:for(i=0;i<s.length;i++){area_total+=s[i].area();}abstractclassShape{abstractdoublearea();}classRectangleextendsShape{publicdoublewidth,height;Rectangle(doublew,doubleh){width=w;height=h;}publicdoublearea(){returnwidth*height;}}classCircleextendsShape{publicdoubler;Circle(doubler){this.r=r;}publicdoublearea(){return3.14*r*r;}}
聲明一個抽象類Shape,包括一個抽象方法area();
參照上述說明和代碼,編寫執(zhí)行類程序,求得一個數(shù)組元素面積和,數(shù)組定義如下:
Shapes[]=newShape[5];s[0]=newCircle(1.0);s[1]=newCircle(2.0);s[2]=newCircle(3.0);s[3]=newRectangle(1.0,1.0);s[4]=newRectangle(2.0,3.0);
公共訪問控制符public
public
classLessextendsXXXX{}
對所有類可見;默認(rèn)訪問控制符(friendly)
classLessextendsXXXX{}同包中類可訪問,其他包內(nèi)類無權(quán)訪問。訪問控制P90公共訪問控制符publicpackagea;
public
classPeople{
publicStringname="“;
publicStringgetName(){ returnname;}}packageb;importa.People;classLess1{publicstaticvoidmain(String[]args){Peoplep=newPeople();
=“Tom”;System.out.println(p.getName());System.out.println();}}盡可能只將需要公開的方法聲明為public,對屬性盡可能聲明為private。
缺省訪問權(quán)限(friendly)包權(quán)限只能被同一包內(nèi)的類訪問。
packagefriently_;
classPeople{
Stringname=“name”;StringgetName(){return“getName”;}}
packagefriently_;
publicclassLess2{publicstaticvoidmain(String[]args){Peoplep=newPeople();System.out.println(p.getName());System.out.println();}}保護(hù)訪問權(quán)限protected
只能被類本身及其子類訪問
packageprotected_;
publicclassPeople{
protectedStringname=“name”;
protectedStringgetName(){return“getName”;}}
packageprotected_.a;
importprotected_.*;publicclassLessextendsPeople{publicvoidtest(){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 擠壓模擬課程設(shè)計
- 銀行支行的行政后勤工作綜述
- 寵物服務(wù)員工作總結(jié)
- 港口貨物裝卸合同三篇
- 三年級科學(xué)學(xué)科的教學(xué)工作總結(jié)
- 門診護(hù)士年終總結(jié)
- 【八年級下冊歷史】期中達(dá)標(biāo)測試卷
- 2024年統(tǒng)計員年終工作總結(jié)篇
- 2024-2025學(xué)年北京門頭溝區(qū) 初三(上)期末物物理試卷(含答案)
- 分包采購委托合同(2篇)
- 《人員素質(zhì)測評理論與方法》電子版本
- 61850基礎(chǔ)技術(shù)介紹0001
- 陶瓷色料的技術(shù)PPT課件
- 幼兒園食品安全工作計劃四篇
- 課程設(shè)計YA32-350型四柱萬能液壓機(jī)液壓系統(tǒng)設(shè)計
- (精心整理)系動詞練習(xí)題
- 體彩排列五歷史數(shù)據(jù)
- 中國工業(yè)數(shù)據(jù)庫介紹
- 弱電智能化設(shè)計服務(wù)建議書(共35頁)
- 中國銀監(jiān)會關(guān)于規(guī)范中長期貸款還款方式的通知
- 通信工程外文文獻(xiàn)(共12頁)
評論
0/150
提交評論