Java面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第1頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第2頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第3頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第4頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)課件_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java面向?qū)ο蟪淌皆O(shè)計(jì)

2.1識別字、分隔符號和關(guān)鍵字

3.1類的創(chuàng)建

類是組成Java程式的基本要素,也是Java中重要的引用數(shù)據(jù)類型。類封裝了一類對象的狀態(tài)屬性和行為方法,是類對象的原型。創(chuàng)建一個(gè)新類,就是創(chuàng)建一種新的數(shù)據(jù)類型,即引用數(shù)據(jù)類型。3.1.1類的聲明

類的實(shí)現(xiàn)包括兩部分:類聲明和類體?;靖袷綖椋?/語法格式:[<修飾符>]class<類名>[<extendsSuperclassName>][<implementsinterfaceNameList>]{[<成員變數(shù)聲明>][<構(gòu)造函數(shù)聲明>][<成員方法聲明>]}3.1.1類的聲明

其中修飾符可以是pubic、abstract或final,說明類的屬性。這個(gè)public關(guān)鍵字聲明了類可以在其他任何的類中使用;abstract關(guān)鍵字聲明了這個(gè)類不能被實(shí)例化;Final關(guān)鍵字聲明了類不能被繼承,即沒有子類了。l

class是關(guān)鍵字,用來定義類,類名必須是合法的Java識別字;extends是關(guān)鍵字,用來說明該類是SuperclassName.SuperclassName是該類的父類的名字;l

implements是關(guān)鍵字,用來聲明本類要執(zhí)行的一個(gè)或多個(gè)介面,interfaceNameList是本類所執(zhí)行的介面的名字列表,它們是以逗號分隔的。

兩個(gè)大括弧以及之間的內(nèi)容是類體。3.1.2類體

類體是跟在類聲明的後面,它是嵌入在大括弧“{”和“}”中間的。類體中定義該類中所有的變數(shù)和所支持的方法。例如:

classPerson{

intage;//成員變數(shù)

intgetAge(){//成員方法

returnage;} voidsetAge(inti){//成員方法

age=i;}}3.1.3成員變數(shù)和局部變數(shù)

類的狀態(tài)是由它的成員變數(shù)給出的,你可以在類體中聲明一個(gè)類的成員變數(shù)。

成員變數(shù):在類體中,變數(shù)聲明部分所聲明的變數(shù)被稱為類的成員變數(shù);

局部變數(shù):在方法體中聲明的變數(shù)和方法中的參數(shù)被稱為局部變數(shù)。對類的成員變數(shù)來說,又可以分為實(shí)例成員變數(shù)和類成員變數(shù),如果在聲明時(shí),用修飾符static聲明的變數(shù)稱為類變數(shù),在聲明時(shí),沒有用修飾符static修飾的變數(shù)稱為實(shí)例變數(shù)。3.1.3成員變數(shù)和局部變數(shù)

成員變數(shù)的類型可以是Java中任意的數(shù)據(jù)類型,包括簡單類型、類、介面和數(shù)組。成員變數(shù)在類的定義中聲明,在一個(gè)類中成員變數(shù)的名字是唯一的。在創(chuàng)建對象的同時(shí)創(chuàng)建有關(guān)的成員變數(shù),成員變數(shù)創(chuàng)建後系統(tǒng)自動(dòng)對其進(jìn)行默認(rèn)初始化或顯式初始化。

成員變數(shù)依附於對象(局部變數(shù))的存在而存在,具有與對象相同的生存期和作用域。例如:

publicclassPerson{privateintage;publicStringname=“Lila”;}成員變數(shù)的限定符

對於一個(gè)成員變數(shù),可以使用不同的限定符,以限定不同的訪問許可權(quán)。Private:變數(shù)可以被類中的代碼訪問Friend:變數(shù)可以被工程或組件中的代碼訪問Protected:可以被繼承的類訪問Public:適用於類外的代碼通常,使用Private關(guān)鍵字來聲明成員變數(shù),使這些變數(shù)僅適用於每個(gè)類實(shí)例中的代碼。同時(shí)這種方式也符合類的封裝性。成員變數(shù)的限定符

對於一個(gè)成員變數(shù),還可以使用下麵的限定符:

static:

用來制訂一個(gè)變數(shù)使靜態(tài)變數(shù)(類變數(shù)),沒有static修飾的變數(shù)是實(shí)例變數(shù)。類變數(shù)既可以由類方法訪問,由可以右實(shí)例方法來訪問。

final:

用來聲明一個(gè)常量,作用相當(dāng)於C語言中define命令,對於用final關(guān)鍵字修飾的常量,在程式中不能作修改,通常常兩用答謝字母。

volatile:用來聲明一個(gè)由多線程共用的變數(shù),使得各線程對該變數(shù)的訪問能保持一致。定義和使用局部變數(shù)案例

publicclassTestvarible{ privateinti=1; publicvoidmethod1(){

inti=4,j=5; this.i=i+j; method2(7);} publicvoidmethod2(inti){

intj=8; this.i=i+j; System.out.println(this.i);} publicstaticvoidmain(String[]args){

Testvariblet=newTestvarible(); t.method1();}}定義和使用局部變數(shù)案例程式執(zhí)行的效果如圖所示。思考題:該例中哪些是局部變數(shù)和哪些是成員變數(shù)?並說明其作用域?3.1.4方法

對象的行為是由它的成員方法來執(zhí)行的,其他對象通過調(diào)用它的方法來訪問對象。在JAVA中,你可以在變數(shù)聲明之後再聲明類的成員方法。對類的成員變數(shù)來說,可以分為實(shí)例成員變數(shù)和類成員變數(shù),同樣成員方法同樣可以分為實(shí)例成員方法和類成員方法。如果在聲明時(shí),用修飾符static聲明的方法稱為類方法,在聲明時(shí),沒有用修飾符static修飾的變數(shù)稱為實(shí)例方法。

方法的定義包括兩部分:方法的聲明和方法體。定義和使用方法

classTestmethod{doublex,y;staticfloatmark;floattotal(floata,floatb){floattotal;x=0.4;y=0.6;total=(float)(x*a+y*b);returntotal;}staticvoidsetmark(floati){mark=i;}staticfloatgetmark(){returnmark;}續(xù)

publicvoiddisplay(){System.out.println("Thetotalscore"+"="+mark);publicstaticvoidmain(String[]args){

Testmethodtm=newTestmethod(); mark=tm.total(67,98); tm.display(); tm.setmark(96); tm.display(); }}程式執(zhí)行的效果

該例中,方法setmark和getmark是類方法;方法total是實(shí)例方法,返回值是float類型,在方法被調(diào)用時(shí),形式參數(shù)a,b用來接受外部輸入的數(shù)據(jù)(實(shí)際參數(shù))。3.1.5方法重載

方法重載(overloading)是指多個(gè)方法享有相同的名字,方法的參數(shù)列表必須不一樣,這裏的不一樣可能是個(gè)數(shù),類型不一樣。重載和方法的返回值無關(guān),返回值可以相同,也可以不同。在同一個(gè)類中可以定義多個(gè)同名方法。如:classTestoverload{voidstudent();voidstudent(Stringstr);voidstudent(Stringstr,Stringn);booleanstudent(Stringstr,inta);}3.1.6構(gòu)造函數(shù)

在面向?qū)ο蟪淌秸Z言中,創(chuàng)建對象的時(shí)候總是調(diào)用一個(gè)特定的方法,這個(gè)方法叫做構(gòu)造函數(shù)。在Java語言中,構(gòu)造函數(shù)特點(diǎn)是:構(gòu)造函數(shù)的名字必須與它所在的類的名字完全相同;構(gòu)造函數(shù)不返回任何數(shù)據(jù)類型,即它是void型,但不能寫void;構(gòu)造函數(shù)一般不能有編程人員顯示地直接調(diào)用,必須通過運(yùn)算符new調(diào)用或者在創(chuàng)建對象時(shí)由系統(tǒng)自動(dòng)調(diào)用。默認(rèn)的構(gòu)造函數(shù)Java語言中,每個(gè)類都至少有一個(gè)構(gòu)造方法;如果類的定義者沒有顯式的定義任何構(gòu)造方法,系統(tǒng)將自動(dòng)提供一個(gè)默認(rèn)的構(gòu)造方法:默認(rèn)構(gòu)造方法沒有參數(shù)默認(rèn)構(gòu)造方法沒有方法體Java類中,一旦類的定義者顯式定義了一個(gè)或多個(gè)構(gòu)造方法,系統(tǒng)將不再提供默認(rèn)的構(gòu)造方法;默認(rèn)的構(gòu)造方法類的定義:publicclassPerson{ privateintage; publicvoidsetAge(intw){age=w;} }等價(jià)於:publicclassPerson{ privateintage publicPerson(){} publicvoidsetAge(intw){age=w;} }應(yīng)用舉例:publicclassTest{publicstaticvoidmain(Stringargs[]){Persond=newPerson();d.setAge(16);}}用於覆蓋範(fàn)圍規(guī)則,代表當(dāng)前對象本身。當(dāng)一個(gè)方法需要啟動(dòng)它的對象時(shí),即可以利用this實(shí)現(xiàn)該功能。因此,this可以看成是類對象的別名,使類中的隱藏?cái)?shù)據(jù)以及方法可以引用。如:classCollege {inta; publicstaticvoidmain(Stringargs[]) {inta=6; Collegebb=newCollege();System.out.println("main().a="+a);System.out.println("bb.a="+bb.call());}3.1.7this的用法

續(xù)

intcall(){inta=9;this.a=a++;System.out.println("call().a="+a);returnthis.a;}}程式執(zhí)行的效果

3.2繼承

繼承(inheritance)的思想就是重用其他類中的方法和屬性來創(chuàng)建新類。利用繼承,可以先創(chuàng)建一個(gè)具有某些基本功能的一般類,然後將這些類作為基礎(chǔ)去創(chuàng)建具有特殊功能的類。由繼承而得到的類稱為子類(subclass),被繼承的類稱為父類或超類(superclass)。父類包括所有直接或間接被繼承的類。一個(gè)父類可以同時(shí)擁有多個(gè)子類,由於Java不支持多重繼承,所以一個(gè)子類只能擁有一個(gè)直接父類。在Java中,所有的類都是通過直接或間接繼承類java.lang.Object而得到的。類的繼承(1)為描述和處理個(gè)人資訊,定義類Person:publicclassPerson{publicStringname;publicintage;publicDatebirthDate;publicStringgetInfo(){...}}Person+name:String+age:int+birthDate:Date+getInfo():String類的繼承(2)為描述和處理學(xué)生資訊,定義類Student:publicclassStudent{publicStringname;publicintage;publicDatebirthDate;publicStringschool;publicStringgetInfo(){...}}Student+name:String+age:int+birthDate:Date+school:String+getInfo():String類的繼承(3)通過繼承,簡化Student類的定義:publicclassPerson{publicStringname;publicintage;publicDatebirthDate;publicStringgetInfo(){...}}publicclassStudentextendsPerson{publicStringschool;}Person+name:String+age:int+birthDate:Date+getInfo():StringStudent+school:String3.2.3成員變數(shù)的隱藏和方法的覆蓋

變數(shù)的隱藏:如果子類中定義的成員變數(shù)和父類中的成員變數(shù)完全相同,此時(shí)父類中的成員變數(shù)將被隱藏,這種現(xiàn)象稱為變數(shù)的隱藏。

方法的覆蓋:如果在子類中定義的方法和父類中定義的方法在名字、返回類型、參數(shù)個(gè)數(shù)和參數(shù)類型方面完全相同,此時(shí)父類中的方法將被隱藏,這種現(xiàn)象被稱為方法的覆蓋或重寫。案例見3-6,p69.3.2.4關(guān)鍵字static

在Java類中聲明變數(shù)、方法和內(nèi)部類時(shí),可使用關(guān)鍵字static做為修飾符。static標(biāo)記的變數(shù)或方法由整個(gè)類(所有實(shí)例)共用,如訪問控制權(quán)限允許,可不必創(chuàng)建該類對象而直接用類名加‘.’調(diào)用。static成員也稱類成員或靜態(tài)成員,如:類屬性、類方法、靜態(tài)方法等。應(yīng)用案例見p71例3-7,3-8。3.2.5關(guān)鍵字final和abstract

final的用法在Java中聲明類、屬性和方法時(shí),可使用關(guān)鍵字final來修飾。final標(biāo)記的類不能被繼承。final標(biāo)記的方法不能被子類重寫。final標(biāo)記的變數(shù)(成員變數(shù)或局部變數(shù))即成為常量,只能賦值一次。final標(biāo)記的成員變數(shù)必須在聲明的同時(shí)或在每個(gè)構(gòu)造方法中顯式賦值,然後才能使用。應(yīng)用案例見p73例3-9。3.2.5關(guān)鍵字final和abstract

abstract的用法

如果一個(gè)類在聲明時(shí)被關(guān)鍵字abstract所修飾,說明該類不能直接創(chuàng)建對象,這樣的類被稱為抽象類。抽象類往往是它的所有子類共有屬性的集合。如Java中的Number類就是一個(gè)抽象類。抽象類必須產(chǎn)生子類,由子類創(chuàng)建對象。

如果一個(gè)方法在聲明時(shí)被關(guān)鍵字abstract所修飾,那麼該方法被稱為抽象方法。抽象方法只允許聲明,不允許實(shí)現(xiàn)。應(yīng)用案例見p74例3-10。3.2.6關(guān)鍵字super

在子類中隱藏了父類的成員變數(shù)或覆蓋了父類的方法後,常常還需要調(diào)用父類中被隱藏的變數(shù)和被覆蓋的方法,這是就需使用關(guān)鍵字super來訪問父類的變數(shù)和方法。關(guān)鍵字this用來引用當(dāng)前對象,而關(guān)鍵字super用來引用當(dāng)前對象的父類。使用關(guān)鍵字super不僅可以訪問父類中被隱藏成員變數(shù)和覆蓋的方法,而且還可以調(diào)用父類的構(gòu)造函數(shù)。應(yīng)用案例見p75例3-11。3.3包

由於Java編譯器為每個(gè)類生成一個(gè)位元組碼檔,且檔案名與public的類名相同,因此同名的類有可能發(fā)生衝突。為了解決這個(gè)問題,Java提供包(package)來管理類名空間和訪問保護(hù)機(jī)制。package語句package語句作為Java原始檔案的第一條語句,指明該檔中定義的類所在的包。(若缺省該語句,則指定為無名包)。它的格式為:

packagepkg1[.pkg2[.pkg3…]];

舉例:Beauty.java

packagestudentbiggirl;publicclassBeauty{ publicvoiddisplay(){ System.out.println("I’vebigeyes"); }}Java編譯器把包對應(yīng)於檔系統(tǒng)的目錄管理,package語句中,用‘.’來指明包(目錄)的層次;

import語句為使用定義在不同包中的Java類,需用import語句來引入所需要的類。語法格式:

importpackage1[.package2…].(classname|*);應(yīng)用舉例:

importstudent.biggirl.Beauty;publicclassTestPackage{publicstaticvoidmain(Stringargs[]){Beautyb=newBeauty(); b.show(); }}3.4訪問控制ModiferSameClassSamePackageSubclassUniverseprivateYesdefaultYesYesprotectedYesYesYespublicYesYesYesYes可以對Java類中定義的屬性和方法進(jìn)行訪問控制----規(guī)定不同的保護(hù)等級:應(yīng)用案例見p80-87例3-14-17。

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論