版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java面向?qū)ο蟪绦蛟O(shè)計(jì)
2.1標(biāo)識(shí)符、分隔符和關(guān)鍵字
3.1類的創(chuàng)建
類是組成Java程序的基本要素,也是Java中重要的引用數(shù)據(jù)類型。類封裝了一類對(duì)象的狀態(tài)屬性和行為方法,是類對(duì)象的原型。創(chuàng)建一個(gè)新類,就是創(chuàng)建一種新的數(shù)據(jù)類型,即引用數(shù)據(jù)類型。3.1.1類的聲明
類的實(shí)現(xiàn)包括兩部分:類聲明和類體?;靖袷綖椋?/語(yǔ)法格式:[<修飾符>]class<類名>[<extendsSuperclassName>][<implementsinterfaceNameList>]{[<成員變量聲明>][<構(gòu)造函數(shù)聲明>][<成員方法聲明>]}3.1.1類的聲明
其中修飾符可以是pubic、abstract或final,說(shuō)明類的屬性。這個(gè)public關(guān)鍵字聲明了類可以在其它任何的類中使用;abstract關(guān)鍵字聲明了這個(gè)類不能被實(shí)例化;Final關(guān)鍵字聲明了類不能被繼承,即沒(méi)有子類了。l
class是關(guān)鍵字,用來(lái)定義類,類名必須是合法的Java標(biāo)識(shí)符;extends是關(guān)鍵字,用來(lái)說(shuō)明該類是SuperclassName.SuperclassName是該類的父類的名字;l
implements是關(guān)鍵字,用來(lái)聲明本類要執(zhí)行的一個(gè)或多個(gè)接口,interfaceNameList是本類所執(zhí)行的接口的名字列表,它們是以逗號(hào)分隔的。
兩個(gè)大括號(hào)以及之間的內(nèi)容是類體。3.1.2類體
類體是跟在類聲明的后面,它是嵌入在大括號(hào)“{”和“}”中間的。類體中定義該類中所有的變量和所支持的方法。例如:
classPerson{
intage;//成員變量
intgetAge(){//成員方法
returnage;} voidsetAge(inti){//成員方法
age=i;}}3.1.3成員變量和局部變量
類的狀態(tài)是由它的成員變量給出的,你可以在類體中聲明一個(gè)類的成員變量。
成員變量:在類體中,變量聲明部分所聲明的變量被稱為類的成員變量;
局部變量:在方法體中聲明的變量和方法中的參數(shù)被稱為局部變量。對(duì)類的成員變量來(lái)說(shuō),又可以分為實(shí)例成員變量和類成員變量,如果在聲明時(shí),用修飾符static聲明的變量稱為類變量,在聲明時(shí),沒(méi)有用修飾符static修飾的變量稱為實(shí)例變量。3.1.3成員變量和局部變量
成員變量的類型可以是Java中任意的數(shù)據(jù)類型,包括簡(jiǎn)單類型、類、接口和數(shù)組。成員變量在類的定義中聲明,在一個(gè)類中成員變量的名字是唯一的。在創(chuàng)建對(duì)象的同時(shí)創(chuàng)建有關(guān)的成員變量,成員變量創(chuàng)建后系統(tǒng)自動(dòng)對(duì)其進(jìn)行默認(rèn)初始化或顯式初始化。
成員變量依附于對(duì)象(局部變量)的存在而存在,具有與對(duì)象相同的生存期和作用域。例如:
publicclassPerson{privateintage;publicStringname=“Lila”;}成員變量的限定符
對(duì)于一個(gè)成員變量,可以使用不同的限定符,以限定不同的訪問(wèn)權(quán)限。Private:變量可以被類中的代碼訪問(wèn)Friend:變量可以被工程或組件中的代碼訪問(wèn)Protected:可以被繼承的類訪問(wèn)Public:適用于類外的代碼通常,使用Private關(guān)鍵字來(lái)聲明成員變量,使這些變量?jī)H適用于每個(gè)類實(shí)例中的代碼。同時(shí)這種方式也符合類的封裝性。成員變量的限定符
對(duì)于一個(gè)成員變量,還可以使用下面的限定符:
static:
用來(lái)制訂一個(gè)變量使靜態(tài)變量(類變量),沒(méi)有static修飾的變量是實(shí)例變量。類變量既可以由類方法訪問(wèn),由可以右實(shí)例方法來(lái)訪問(wèn)。
final:
用來(lái)聲明一個(gè)常量,作用相當(dāng)于C語(yǔ)言中define命令,對(duì)于用final關(guān)鍵字修飾的常量,在程序中不能作修改,通常常兩用答謝字母。
volatile:用來(lái)聲明一個(gè)由多線程共享的變量,使得各線程對(duì)該變量的訪問(wèn)能保持一致。定義和使用局部變量案例
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();}}定義和使用局部變量案例程序執(zhí)行的效果如圖所示。思考題:該例中哪些是局部變量和哪些是成員變量?并說(shuō)明其作用域?3.1.4方法
對(duì)象的行為是由它的成員方法來(lái)執(zhí)行的,其它對(duì)象通過(guò)調(diào)用它的方法來(lái)訪問(wèn)對(duì)象。在JAVA中,你可以在變量聲明之后再聲明類的成員方法。對(duì)類的成員變量來(lái)說(shuō),可以分為實(shí)例成員變量和類成員變量,同樣成員方法同樣可以分為實(shí)例成員方法和類成員方法。如果在聲明時(shí),用修飾符static聲明的方法稱為類方法,在聲明時(shí),沒(méi)有用修飾符static修飾的變量稱為實(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用來(lái)接受外部輸入的數(shù)據(jù)(實(shí)際參數(shù))。3.1.5方法重載
方法重載(overloading)是指多個(gè)方法享有相同的名字,方法的參數(shù)列表必須不一樣,這里的不一樣可能是個(gè)數(shù),類型不一樣。重載和方法的返回值無(wú)關(guān),返回值可以相同,也可以不同。在同一個(gè)類中可以定義多個(gè)同名方法。如:classTestoverload{voidstudent();voidstudent(Stringstr);voidstudent(Stringstr,Stringn);booleanstudent(Stringstr,inta);}3.1.6構(gòu)造函數(shù)
在面向?qū)ο蟪绦蛘Z(yǔ)言中,創(chuàng)建對(duì)象的時(shí)候總是調(diào)用一個(gè)特定的方法,這個(gè)方法叫做構(gòu)造函數(shù)。在Java語(yǔ)言中,構(gòu)造函數(shù)特點(diǎn)是:構(gòu)造函數(shù)的名字必須與它所在的類的名字完全相同;構(gòu)造函數(shù)不返回任何數(shù)據(jù)類型,即它是void型,但不能寫(xiě)void;構(gòu)造函數(shù)一般不能有編程人員顯示地直接調(diào)用,必須通過(guò)運(yùn)算符new調(diào)用或者在創(chuàng)建對(duì)象時(shí)由系統(tǒng)自動(dòng)調(diào)用。默認(rèn)的構(gòu)造函數(shù)Java語(yǔ)言中,每個(gè)類都至少有一個(gè)構(gòu)造方法;如果類的定義者沒(méi)有顯式的定義任何構(gòu)造方法,系統(tǒng)將自動(dòng)提供一個(gè)默認(rèn)的構(gòu)造方法:默認(rèn)構(gòu)造方法沒(méi)有參數(shù)默認(rèn)構(gòu)造方法沒(méi)有方法體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);}}用于覆蓋范圍規(guī)則,代表當(dāng)前對(duì)象本身。當(dāng)一個(gè)方法需要激活它的對(duì)象時(shí),即可以利用this實(shí)現(xiàn)該功能。因此,this可以看成是類對(duì)象的別名,使類中的隱藏?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)的思想就是重用其它類中的方法和屬性來(lái)創(chuàng)建新類。利用繼承,可以先創(chuàng)建一個(gè)具有某些基本功能的一般類,然后將這些類作為基礎(chǔ)去創(chuàng)建具有特殊功能的類。由繼承而得到的類稱為子類(subclass),被繼承的類稱為父類或超類(superclass)。父類包括所有直接或間接被繼承的類。一個(gè)父類可以同時(shí)擁有多個(gè)子類,由于Java不支持多重繼承,所以一個(gè)子類只能擁有一個(gè)直接父類。在Java中,所有的類都是通過(guò)直接或間接繼承類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)通過(guò)繼承,簡(jiǎn)化Student類的定義:publicclassPerson{publicStringname;publicintage;publicDatebirthDate;publicStringgetInfo(){...}}publicclassStudentextendsPerson{publicStringschool;}Person+name:String+age:int+birthDate:Date+getInfo():StringStudent+school:String3.2.3成員變量的隱藏和方法的覆蓋
變量的隱藏:如果子類中定義的成員變量和父類中的成員變量完全相同,此時(shí)父類中的成員變量將被隱藏,這種現(xiàn)象稱為變量的隱藏。
方法的覆蓋:如果在子類中定義的方法和父類中定義的方法在名字、返回類型、參數(shù)個(gè)數(shù)和參數(shù)類型方面完全相同,此時(shí)父類中的方法將被隱藏,這種現(xiàn)象被稱為方法的覆蓋或重寫(xiě)。案例見(jiàn)3-6,p69.3.2.4關(guān)鍵字static
在Java類中聲明變量、方法和內(nèi)部類時(shí),可使用關(guān)鍵字static做為修飾符。static標(biāo)記的變量或方法由整個(gè)類(所有實(shí)例)共享,如訪問(wèn)控制權(quán)限允許,可不必創(chuàng)建該類對(duì)象而直接用類名加‘.’調(diào)用。static成員也稱類成員或靜態(tài)成員,如:類屬性、類方法、靜態(tài)方法等。應(yīng)用案例見(jiàn)p71例3-7,3-8。3.2.5關(guān)鍵字final和abstract
final的用法在Java中聲明類、屬性和方法時(shí),可使用關(guān)鍵字final來(lái)修飾。final標(biāo)記的類不能被繼承。final標(biāo)記的方法不能被子類重寫(xiě)。final標(biāo)記的變量(成員變量或局部變量)即成為常量,只能賦值一次。final標(biāo)記的成員變量必須在聲明的同時(shí)或在每個(gè)構(gòu)造方法中顯式賦值,然后才能使用。應(yīng)用案例見(jiàn)p73例3-9。3.2.5關(guān)鍵字final和abstract
abstract的用法
如果一個(gè)類在聲明時(shí)被關(guān)鍵字abstract所修飾,說(shuō)明該類不能直接創(chuàng)建對(duì)象,這樣的類被稱為抽象類。抽象類往往是它的所有子類共有屬性的集合。如Java中的Number類就是一個(gè)抽象類。抽象類必須產(chǎn)生子類,由子類創(chuàng)建對(duì)象。
如果一個(gè)方法在聲明時(shí)被關(guān)鍵字abstract所修飾,那么該方法被稱為抽象方法。抽象方法只允許聲明,不允許實(shí)現(xiàn)。應(yīng)用案例見(jiàn)p74例3-10。3.2.6關(guān)鍵字super
在子類中隱藏了父類的成員變量或覆蓋了父類的方法后,常常還需要調(diào)用父類中被隱藏的變量和被覆蓋的方法,這是就需使用關(guān)鍵字super來(lái)訪問(wèn)父類的變量和方法。關(guān)鍵字this用來(lái)引用當(dāng)前對(duì)象,而關(guān)鍵字super用來(lái)引用當(dāng)前對(duì)象的父類。使用關(guān)鍵字super不僅可以訪問(wèn)父類中被隱藏成員變量和覆蓋的方法,而且還可以調(diào)用父類的構(gòu)造函數(shù)。應(yīng)用案例見(jiàn)p75例3-11。3.3包
由于Java編譯器為每個(gè)類生成一個(gè)字節(jié)碼文件,且文件名與public的類名相同,因此同名的類有可能發(fā)生沖突。為了解決這個(gè)問(wèn)題,Java提供包(package)來(lái)管理類名空間和訪問(wèn)保護(hù)機(jī)制。package語(yǔ)句package語(yǔ)句作為Java源文件的第一條語(yǔ)句,指明該文件中定義的類所在的包。(若缺省該語(yǔ)句,則指定為無(wú)名包)。它的格式為:
packagepkg1[.pkg2[.pkg3…]];
舉例:Beauty.java
packagestudentbiggirl;publicclassBeauty{ publicvoiddisplay(){ System.out.println("I’vebigeyes"); }}Java編譯器把包對(duì)應(yīng)于文件系統(tǒng)的目錄管理,package語(yǔ)句中,用‘.’來(lái)指明包(目錄)的層次;
import語(yǔ)句為使用定義在不同包中的Java類,需用import語(yǔ)句來(lái)引入所需要的類。語(yǔ)法格式:
importpackage1[.package2…].(classname|*);應(yīng)用舉例:
importstudent.biggirl.Beauty;publicclassTestPackage{publicstaticvoidmain(Stringargs[]){Beautyb=newBeauty(); b.show(); }}3.4訪問(wèn)控制ModiferSameClassSamePackageSubclassUniverseprivateYesdefaultYesYesprotectedYesYesYespublicYesYesYesYes可以對(duì)Java類中定義的屬性和方法進(jìn)行訪問(wèn)控制----規(guī)定不同的保護(hù)等級(jí):應(yīng)用案例見(jiàn)p80-87例3-14-17。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度專業(yè)演出場(chǎng)地租賃及活動(dòng)策劃服務(wù)協(xié)議3篇
- 2025年度碼頭貨物短途運(yùn)輸及環(huán)保處理服務(wù)合同4篇
- 2024-2025學(xué)年高中歷史第五單元近現(xiàn)代中國(guó)的先進(jìn)思想第20課西學(xué)東漸課后習(xí)題含解析岳麓版必修3
- 二零二五版生態(tài)修復(fù)工程承攬合同模板-施工與生態(tài)保護(hù)2篇
- 2025年度門衛(wèi)人員安全教育與聘用合同
- 2024版派遣員工合同樣本2篇
- 2025版高端商務(wù)辦公空間租賃合同4篇
- 2024碼頭場(chǎng)地租賃合同
- 2024版天然氣安全運(yùn)輸合同
- 2024鐵路旅客運(yùn)輸服務(wù)質(zhì)量監(jiān)督合同3篇
- 運(yùn)輸供應(yīng)商年度評(píng)價(jià)表
- 機(jī)械點(diǎn)檢員職業(yè)技能知識(shí)考試題庫(kù)與答案(900題)
- 成熙高級(jí)英語(yǔ)聽(tīng)力腳本
- 北京語(yǔ)言大學(xué)保衛(wèi)處管理崗位工作人員招考聘用【共500題附答案解析】模擬試卷
- 肺癌的診治指南課件
- 人教版七年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)完整版課件
- 商場(chǎng)裝修改造施工組織設(shè)計(jì)
- (中職)Dreamweaver-CC網(wǎng)頁(yè)設(shè)計(jì)與制作(3版)電子課件(完整版)
- 統(tǒng)編版一年級(jí)語(yǔ)文上冊(cè) 第5單元教材解讀 PPT
- 加減乘除混合運(yùn)算600題直接打印
- ASCO7000系列GROUP5控制盤(pán)使用手冊(cè)
評(píng)論
0/150
提交評(píng)論