下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
類和對象講義第2章類的定義2.1.1類的基本結(jié)構(gòu)1.類的聲明——外圍部分2.類體——內(nèi)部部分類體中定義了決定對象特性的行為的字段、構(gòu)造器和方法,其中:字段保存每個(gè)對象要用的數(shù)據(jù)構(gòu)造器讓每個(gè)對象一旦被創(chuàng)建出來就被正確地初始化;方法實(shí)現(xiàn)了對象的行為。類的一般形式:publicclass類名{字段構(gòu)造器方法}練習(xí)2-1:寫出Student類和LabClass類的聲明部分。2.1.2字段字段(field):保存了對象要使用的數(shù)據(jù),又稱作實(shí)例變量。打開TicketMachine類,該類有3個(gè)字段:price、balance和total。字段是對象內(nèi)的一小塊用來保存數(shù)值的空間。每一個(gè)對象被創(chuàng)建后,就具有在它所屬的類中聲明過的每一個(gè)字段所需的空間。1.字段的聲明privateintprice;//字段price的聲明private指出它們都是對象的私有字段;int是字段的類型,說明它們都可以存儲整數(shù)值。因?yàn)樽侄伪4媪丝赡軙S著時(shí)間變化的值,所以又被稱作變量。如果需要就可以改變字段中保存的值。2.注釋(comment)注釋是插在類的代碼中,用來向閱讀者提供解釋信息的語句。它是非執(zhí)行語句,不會影響類的功能。單行注釋:以兩個(gè)字符“//”開頭;多行注釋:以“/*”開頭,以“*/”結(jié)束;文檔注釋:以“/**”開頭,以“*/”結(jié)束。練習(xí)2-2:下面每個(gè)字段的類型分別是什么?privateintcount;privateStudentrepresentative;privateServerhost;練習(xí)2-3:下面字段的名字分別是什么?privatebooleanalive;privatePersontutor;privateGamegame練習(xí)2-4:寫一個(gè)字段的完整聲明,字段的名字是status,類型是into2.1.3構(gòu)造器構(gòu)造器(constructor)讓每個(gè)對象一旦創(chuàng)建出來就被正確地初始化。構(gòu)造器把對象初始化成一個(gè)合理的狀態(tài)。TicketMachine類的構(gòu)造器代碼如下:publicTicketMachine(intticketCost)//構(gòu)造器的聲明{price=ticketCost;balance=0;total=0;}1.類構(gòu)造器的特點(diǎn)構(gòu)造器與定義它們的類具有相同的名字;構(gòu)造器在創(chuàng)建實(shí)例對象時(shí)自動被調(diào)用;構(gòu)造器無返回值,也沒有void。構(gòu)造器的一個(gè)很重要的功能就是保存信息,這樣這些信息就能在對象的整個(gè)生命周期中使用。數(shù)定義在構(gòu)造器或方法的頭部,如publicTicketMachine(intticketCost)的代碼的范圍。參數(shù)的作用域被限制在聲明這個(gè)參數(shù)的構(gòu)造器或方法體內(nèi);字段的作用域在類的定義中,即在表示這個(gè)類的代碼的任何地方都可以訪問。(2)生命周期生命周期(lifetime):變量的生命周期表明了在變量被清除之前能繼續(xù)存在多久。參數(shù)的生命周期限制在對構(gòu)造器或方法的調(diào)用中。一旦調(diào)用完成,形參就消失了,它們保存的值也就丟失了。換言之,當(dāng)構(gòu)造器或方法結(jié)束了運(yùn)行,整個(gè)構(gòu)造器空間或方法空間連同在這個(gè)空間里的參數(shù)變量就被刪除了。字段的生命周期就是它所屬的對象的生命周期。練習(xí)2-5:下面這個(gè)構(gòu)造器屬于哪個(gè)類?publicStudent(Stringname)練習(xí)2-5:下面的構(gòu)造器有幾個(gè)參數(shù),它們的類型分別是什么?publicBook(Stringtitle,doubleprice)練習(xí)2-6:你能猜測一下Book類的字段可能的名字與類型嗎?4.賦值構(gòu)造器中的一條賦值語句:price=ticketcost;有賦值運(yùn)算符“=”的語句是賦值語句。賦值語句把賦值運(yùn)算符右邊的值復(fù)制給左邊的變量。賦值運(yùn)算符的右邊通常是表達(dá)式。表達(dá)式的類型必須與要賦值的變量的類型匹配。同樣的規(guī)則也適用于形參和實(shí)參:實(shí)參的類型必須與形參的類型相匹配。練習(xí)2-7:假設(shè)類Pet有一個(gè)字段叫作name,類型是String。在下面的構(gòu)造器里寫一條賦值語句,使得name字段能夠以構(gòu)造器的參數(shù)來初始化。publicPet(StringpetName){^習(xí)2-8:下面TicketMachine類的構(gòu)造器有什么錯(cuò)誤?publicTicketMachine(intticketcost){intprice=ticketcost;balance=0;total=0; }2.1.4方法TicketMachine類有4個(gè)方法:getPrice、getBalance、insertMoney和printTicket。getPrice方法如下:publicintgetPrice()//方法聲明或方法頭{returnprice; //方法體(方法體必須由一對花括號括起來)}1.方法的組成方法由兩個(gè)部分組成:方法頭和方法體。方法聲明:方法頭方法體,方法體內(nèi)包含了當(dāng)方法被調(diào)用時(shí)會發(fā)生的變量聲明和語句。語句塊(block):在一對大括號中的所有語句叫做一個(gè)語句塊。類體和方法體都是語句塊。2.方法的返回值和返回語句方法可以有返回值,返回類型寫在方法名的前面,同時(shí)在方法體中還必須有一條返回語句,語句格式如下:return表達(dá)式;返回語句用來返回和方法聲明中的返回類型相匹配的數(shù)據(jù)。有返回值的方法,返回語句總是該方法的最后一條語句。當(dāng)方法沒有返回值時(shí),應(yīng)在方法名前加void。構(gòu)造器與方法對比:方法可以有返回值,而構(gòu)造器沒有任何返回值,也不能在方法名前加void。方法和構(gòu)造器都可以有任意數(shù)量的參數(shù)。3.訪問器方法通常把TicketMachine類的兩個(gè)get方法(getPrice和getBalance)稱作訪問器方法,或訪問器。訪問器方法:返回對象狀態(tài)的信息。即它提供對狀態(tài)的訪問。訪問器通常具有一條返回語句,以返回相關(guān)信息。練習(xí)2-9:如果對getPrice方法的調(diào)用可以被看作是問“票價(jià)是多少?”那么getBalance方法的調(diào)用問的是什么問題?練習(xí)2-10:定義訪問器方法getTotal,返回total字段的值。4.修改器方法修改器方法:改變對象狀態(tài)的方法。insertMoney方法 /***Receiveanamountofmoneyincentsfromacustomer.*/publicvoidinsertMoney(intamount){balance=balance+amount;}Java允許沒有返回值的方法體內(nèi)有一條沒有返回值的語句。形式為:return;該語句會使方法結(jié)束,不再執(zhí)行后面的代碼。insertMoney方法體內(nèi)有一條其他形式的賦值語句:balance=balance+amount;該賦值語句也可以寫作:balance+=amount;練習(xí)2-15:如何僅憑方法頭就判斷setPrice是方法而不是構(gòu)造器?publicvoidsetPrice(intticketCost)練習(xí)2-16:完成setPrice的方法體,使它將其參數(shù)值賦給price字段。練習(xí)2-17:完成下面方法的方法體,方法的目的是把參數(shù)的值加給字段score。/***Increasescorebythegivennumberofpoints.*/publicvoidincrease(intpoints){ }練習(xí)2-18:完成下面的方法,使字段price的值減少給定的參數(shù)的值?/***Reducepricebythegivenamount*/publicvoiddiscount(intamount){??}2.1.5在方法中打印查看printTicket方法的源代碼。publicvoidprintTicket(){//Simulatetheprintingofaticket.System.out.println("##################");System.out.println("#TheBlueJLine");System.out.println("#Ticket");System.out.println("#"+price+"cents.");System.out.println("##################");System.out.println();//Updatethetotalcollectedwiththebalance.total=total+balance;//Clearthebalance.balance=0;}println方法printTicket方法中的所有打印語句都是調(diào)用Java語言中System.out對象的println方法。該方法將它的參數(shù)在字符終端打印輸出。System.out.println("#TheBlueJLine");//輸出字符串System.out.println("#"+price+"cents.");//輸出字符串和變量的值“+”不再是加法運(yùn)算符,而是字符串拼接運(yùn)算符,是將兩個(gè)字符串拼接成一個(gè)字符串,女『”abc”+”edf”,結(jié)果為”abcedf”;女口intsum=123;則”sum=”+sum,是將字符串”sum=”與轉(zhuǎn)換成字符串的變量的值進(jìn)行拼接,結(jié)果為”sum=123”°System.out.println();〃輸出空行練習(xí)2-19:在TicketMachine類中加一個(gè)方法prompt,這個(gè)方法沒有參數(shù)和返回值,方法的功能應(yīng)打印出下面的內(nèi)容:Pleaseinsertthecorrectamountofmoney.練習(xí)2-20:在TicketMachine類中加showPrice方法,這個(gè)方法沒有參數(shù)和返回值,方法的功能是打印出下面的內(nèi)容:Thepriceofaticketisxyzcents.其中,xyz是該方法被除數(shù)調(diào)用時(shí)price字段的值。對售票機(jī)1.0設(shè)計(jì)的探討沒有檢查乘客是否投入買一張票足夠金額的錢幣;不能為乘客找回多投入的錢;不檢查乘客是否投入合理的金額;不檢查傳遞給構(gòu)造器的價(jià)格是否合理。2.2.1條件語句1.條件語句的格式if(布爾表達(dá)式){語句塊1}else{語句塊2}2?布爾表達(dá)式即邏輯表達(dá)式,它的運(yùn)算結(jié)果為布爾值true(真)或false(假)。3. 關(guān)系表達(dá)式insertMoney方法的代碼:publicvoidinsertMoney(intamount){if(amount>0){balance=balance+amount; }else{System.out.println("Useapositiveamount:"+amount); } }2.2.2條件語句例子改進(jìn)售票機(jī)1.0中的printTicket方法,在打印車票之前先檢查乘客是否已經(jīng)投入了足夠的金額。售票機(jī)1.0中的printTicket方法的源代碼printTicket1.txt改進(jìn)后的售票機(jī)2.0中的printTicket方法的源代碼publicvoidprintTicket(){if(balance>=price){//Simulatetheprintingofaticket.System.out.println("##################");System.out.println("#TheBlueJLine");System.out.println("#Ticket");System.out.println("#"+price+"cents.");System.out.println("##################");System.out.println();//Updatethetotalcollectedwiththeprice.total=total+price;//Reducethebalancebytheprince.balance=balance-price;}else{System.out.println("Youmustinsertatleast:"+(price-balance)+"morecents.");}}練習(xí)2-27:寫一條賦值語句,將兩個(gè)變量price和discount的乘積保存在第三個(gè)變量saving中。練習(xí)2-28:寫一條賦值語句,將total的值除以count,結(jié)果保存在mean中。練習(xí)2-29:寫一條if語句,比較price和budget的值。如果price大于budget,則打印信息“太貴了!”;否則打印信息“正好”。練習(xí)2-30:修改練習(xí)2-29,當(dāng)價(jià)格太貴時(shí),打印信息中包含budget的值。2.2.3局部變量查看refundBalance方法的源代碼publicintrefundBalance(){intamountToRefund;//局部變量amountToRefund=balance;//局部變量初始化balance=0;returnamountToRefund;}1.局部變量的定義局部變量(localvariable):在方法內(nèi)部聲明和使用的變量。2.局部變量的使用局部變量通常作為方法實(shí)現(xiàn)其任務(wù)所需的臨時(shí)存儲單元。局部變量的聲明和字段的聲明相似,但是不需要private或public的修飾。局部變量使用前必須先進(jìn)行初始化。局部變量的作用域和形參一樣,僅限于聲明它們的語句所在的方法體內(nèi),它們的生命周期就是方法的執(zhí)行周期,它們存在于方法空間中,在方法被調(diào)用的時(shí)候創(chuàng)建,方法結(jié)束時(shí)被銷毀。構(gòu)造器中也可以有局部變量。方法中的如下兩行代碼:intamountToRefund;amountToRefund=balance;可以寫成下面的一句:intamountToRefund=balance;練習(xí)2-31:為什么下面版本的refundBalance方法不能得出與之前版本相同的結(jié)果?publicintrefundBalance(){balance=0;returnbalance; }練習(xí)2-32:如果試圖用下面版本的refundBalance方法來編譯TicketM
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度ktv包間租賃與經(jīng)營管理合同3篇
- 二零二五年度智慧醫(yī)療信息化建設(shè)合同6篇
- 二零二五年度校園內(nèi)快遞配送單位食品安全快速檢測設(shè)備升級合同3篇
- E省教育局辦公室復(fù)印紙直采協(xié)議(2024版)版B版
- 2024甲乙雙方關(guān)于新能源技術(shù)研發(fā)的獨(dú)家委托合同
- 二零二五年度物流配送監(jiān)事聘任與效率優(yōu)化合同3篇
- 天津城建大學(xué)《東西智慧與管理實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 太原城市職業(yè)技術(shù)學(xué)院《機(jī)電系統(tǒng)動力學(xué)建模與仿真》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度純凈飲用水品牌重塑與營銷推廣合同3篇
- 2024版生態(tài)造林建設(shè)協(xié)議樣本版B版
- 《文化苦旅》讀書分享 PPT
- 氧化鋁生產(chǎn)工藝教學(xué)拜耳法
- 2023年十八項(xiàng)醫(yī)療核心制度考試題與答案
- 氣管切開患者氣道濕化的護(hù)理進(jìn)展資料 氣管切開患者氣道濕化
- GB/T 12706.1-2020額定電壓1 kV(Um=1.2 kV)到35 kV(Um=40.5 kV)擠包絕緣電力電纜及附件第1部分:額定電壓1 kV(Um=1.2 kV)和3 kV(Um=3.6 kV)電纜
- 管理模板:某跨境電商企業(yè)組織結(jié)構(gòu)及部門職責(zé)
- 底架總組裝工藝指導(dǎo)書
- 簡單臨時(shí)工勞動合同模板(3篇)
- 聚酯合成反應(yīng)動力學(xué)
- 上??萍即髮W(xué),面試
- 《五年級奧數(shù)總復(fù)習(xí)》精編課件
評論
0/150
提交評論