Java程序設(shè)計實訓(xùn)教程課件4類與對象_第1頁
Java程序設(shè)計實訓(xùn)教程課件4類與對象_第2頁
Java程序設(shè)計實訓(xùn)教程課件4類與對象_第3頁
Java程序設(shè)計實訓(xùn)教程課件4類與對象_第4頁
Java程序設(shè)計實訓(xùn)教程課件4類與對象_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論