




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
注:假如你的類里定義了一個(gè)或多個(gè)構(gòu)造方法,那么Java不提供默認(rèn)的構(gòu)造方法.?上述例子2提供了構(gòu)造方法,下列創(chuàng)建對(duì)象是非法的: p1=newPoint();對(duì)象的內(nèi)存模型3、對(duì)象的內(nèi)存模型我們使用前面的例子1來說明對(duì)象的內(nèi)存模型.(1)聲明對(duì)象時(shí)的內(nèi)存模型.當(dāng)用XiyoujiRenwuzhubajie類聲明一個(gè)變量zhubajie,即對(duì)象zhubajie時(shí),如例子1中XiyoujiRenwuzhubajie;內(nèi)存模型如圖所示:聲明對(duì)象變量zhubajie后,zhubajie的內(nèi)存中還沒有任何數(shù)據(jù),我們稱這時(shí)zhubajie是一個(gè)空對(duì)象,空對(duì)象不能使用,由于它還沒有得到任何”實(shí)體”.必須再進(jìn)行為對(duì)象分派內(nèi)存的環(huán)節(jié),即為對(duì)象分派實(shí)體(2)對(duì)象分派內(nèi)存后的內(nèi)存模型當(dāng)系統(tǒng)見到zhubajie=newXiyoujiRenwu();時(shí),就會(huì)做兩件事(a)為height,weight,head,ear,mouth,hand,foot各個(gè)變量分派內(nèi)存.即 XiyoujiRenwu類的成員變量被分派內(nèi)存空間.假如成員變量在聲明時(shí)沒有指定初值,那么,對(duì)于整型變量,默認(rèn)初值是0,對(duì)于浮點(diǎn)型,默認(rèn)初值是0.0,對(duì)于booean型,默認(rèn)初值是false,對(duì)于引用型,默認(rèn)初值是null.(b)給出一個(gè)信息,已保證這些變量是屬于對(duì)象zhubajie的,即這些內(nèi)存單元將由zhubajie操作(3)創(chuàng)建多個(gè)不同的對(duì)象 一個(gè)類通過使用new運(yùn)算符可以創(chuàng)建多個(gè)不同的對(duì)象,這些對(duì)象將被分派不同的內(nèi)存空間,因此,改變其中一個(gè)對(duì)象的狀態(tài)不會(huì)影響其它對(duì)象的狀態(tài).?zhubajie=newXiyoujiRenwu();?sunwukong=newXiyoujiRenwu();4.3.2.使用對(duì)象對(duì)象不僅可以操作自己的變量改變狀態(tài),并且還擁有了使用創(chuàng)建它的那個(gè)類中的方法的能力,對(duì)象通過使用這些方法可以產(chǎn)生一定的行為.通過使用運(yùn)算符”.”,對(duì)象可以實(shí)現(xiàn)對(duì)自己的變量訪問和方法的調(diào)用.(1)、對(duì)象操作自己的變量(對(duì)象的屬性) 對(duì)象創(chuàng)建之后,就有了自己的變量,即對(duì)象的實(shí)體.通過使用運(yùn)算符”.”,對(duì)象可以實(shí)現(xiàn)對(duì)自己的變量的訪問.(2)、對(duì)象調(diào)用類中的方法--對(duì)象的功能 對(duì)象創(chuàng)建之后,可以使用運(yùn)算符”.”調(diào)用創(chuàng)建它的類中的方法,從而產(chǎn)生一定的行為功能.?當(dāng)對(duì)象調(diào)用類中的一個(gè)方法時(shí),方法中的局部變量被分派內(nèi)存空間.方法執(zhí)行完畢,局部變量即刻釋放內(nèi)存.classStudent{ float(yī)math,english,sum;? floatf(floatk1,float(yī)k2){? sum=k1*math+k2*english;???returnsum;? }}publicclassExample{?publicstaticvoidmain(Stringargs[]){??Studentwanghong,lihong; wanghong=newStudent();? lihong=newStudent(); wanghong.math=60.0f;? wanghong.english=80f;??lihong.math=70.0f; lihong.english=90.0f;? wanghong.sum=wanghong.f(2.0f,2.0f);? lihong.sum=lihong.f(2.0f,2.0f);? System.out.println("lihongsum="+lihong.sum);??System.out.println("wanghongsum="+wanghong.sum);?}}4.3.3.對(duì)象的引用和實(shí)體?我們已經(jīng)知道,當(dāng)用類創(chuàng)建一個(gè)對(duì)象時(shí),類中的成員變量被分派內(nèi)存空間,這些內(nèi)存空間稱做該對(duì)象的實(shí)體,而對(duì)象中存放著引用,以保證實(shí)體由該對(duì)象操作使用.publicclassPoint{ intx,y; Point(inta,intb){ ?x=a; ?y=b; }?publicstaticvoidmain(Stringargs[]){?Pointp1=newPoint(12,16); Pointp2=newPoint(6,18);?p1=p2;?System.out.println(p1.x); System.out.println(p2.x); } }4.4static關(guān)鍵字4.4.1.實(shí)例變量和類變量的區(qū)別 在講述類的時(shí)候我們講過:類體的定義涉及成員變量的定義和方法的定義,并且成員變量又分為實(shí)例變量和類變量,用stat(yī)ic修飾的變量是類變量.那么類變量和實(shí)例變量有什么區(qū)別呢?我們已經(jīng)知道:一個(gè)類通過使用new運(yùn)算符可以創(chuàng)建多個(gè)不同的對(duì)象,這些對(duì)象將被分派不同的內(nèi)存空間,現(xiàn)在再說得準(zhǔn)確些就是:不同的對(duì)象的實(shí)例變量將被分派不同的內(nèi)存空間,假如類中的成員變量有類變量,那么所有的對(duì)象的這個(gè)類變量都分派給相同的一處內(nèi)存,改變其中一個(gè)對(duì)象的這個(gè)類變量會(huì)影響其它對(duì)象的這個(gè)類變量.?也就是說對(duì)象共享類變量.如classTakecare{?staticintx; inty; …….}classA{?TakecareA1=newTakecare(); TakecareA2=newTakecare();}A1.x=18這時(shí)假如輸出A1.x,A2.x的值,結(jié)果相同都是18見例子StaticTest.java當(dāng)Java程序執(zhí)行時(shí),類的字節(jié)碼文獻(xiàn)被加載到內(nèi)存,假如該類沒有創(chuàng)建對(duì)象,類的實(shí)例成員變量不會(huì)被分派內(nèi)存.但是,類中的類變量,在該類被加載到內(nèi)存時(shí),就分派了相應(yīng)的內(nèi)存空間.假如該類創(chuàng)建對(duì)象,那么不同對(duì)象的實(shí)例變量互不相同,即分派不同的內(nèi)存空間,而類變量不再重新分派內(nèi)存,所有的對(duì)象共享類變量,即所有的對(duì)象的類變量是相同的一處內(nèi)存空間,類變量的內(nèi)存空間直到程序退出運(yùn)營(yíng),才釋放所占有的內(nèi)存.4.4.2.通過類名直接訪問類變量?類變量在類的字節(jié)碼加載到內(nèi)存時(shí)就分派了內(nèi)存空間,并且被所有的對(duì)象共享,因此,Java語言允許通過類名直接訪問類變量.classStat(yī)ictest2{ staticinta=1;}classPoint{?publicstaticvoidmain(Stringargs[]){ intc=Statictest2.a;?System.out.println(c); }}4.4.3.實(shí)例方法和類方法的區(qū)別?當(dāng)類的字節(jié)碼文獻(xiàn)被加載到內(nèi)存時(shí),類的實(shí)例方法不會(huì)被分派入口地址,當(dāng)該類創(chuàng)建對(duì)象后,類中的實(shí)例方法才分派入口地址,從而實(shí)例方法可以被類創(chuàng)建的任何對(duì)象調(diào)用執(zhí)行.需要注意的是,當(dāng)我們創(chuàng)建第一個(gè)對(duì)象時(shí),類中的實(shí)例方法就分派了入口地址,當(dāng)再創(chuàng)建對(duì)象時(shí),不再分派入口地址,也就是說,方法的入口地址被所有的對(duì)象共享,當(dāng)所有的對(duì)象都不存在時(shí),方法的入口地址才被取消.對(duì)于類中的類方法,在該類被加載到內(nèi)存時(shí),類方法就分派了相應(yīng)的入口地址.從而類方法不僅可以被類創(chuàng)建的任何對(duì)象調(diào)用執(zhí)行,也可以直接通過類名調(diào)用.類方法的入口地址直到程序退出才被取消.無論是類方法或?qū)嵗椒?當(dāng)被調(diào)用執(zhí)行時(shí),方法中的局部變量才被分派內(nèi)存空間,方法調(diào)用完畢,局部變量即刻釋放所占的內(nèi)存.4.4.4.通過類名直接調(diào)用類方法 類方法在類的字節(jié)碼加載到內(nèi)存時(shí)就分派了入口地址,因此,Java語言允許通過類名直接調(diào)用類方法,而實(shí)例方法不能通過類名調(diào)用.在講述類的時(shí)候我們強(qiáng)調(diào)過,在Java語言中,類中的類方法不可以操作實(shí)例變量,也不可以調(diào)用實(shí)例方法,這是由于,在類創(chuàng)建對(duì)象之前,實(shí)例成員變量還沒有分派內(nèi)存,實(shí)例方法也沒有入口地址classA{?intx,y;//實(shí)例變量?stat(yī)icintz;//類變量 staticfloat(yī)f(inta){//類方法 } floa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2019-2025年一級(jí)注冊(cè)建筑師之建筑結(jié)構(gòu)能力檢測(cè)試卷B卷附答案
- 2025年3月隱蔽工程影像存檔補(bǔ)充協(xié)議條款
- 自由探索的班級(jí)工作計(jì)劃
- 2025商務(wù)合同談判策略全解「」
- 2025寫字間租賃合同
- 設(shè)計(jì)有趣的班級(jí)互動(dòng)游戲計(jì)劃
- 閑置鋼管改造方案范本
- 如何讓年度工作計(jì)劃更具可持續(xù)性
- 課程與德育融合的創(chuàng)新實(shí)踐計(jì)劃
- 2025家庭護(hù)理服務(wù)合同范例
- 智慧雙碳管理云平臺(tái)建設(shè)方案
- 單基因遺傳病的分子生物學(xué)檢驗(yàn)-醫(yī)學(xué)院課件
- 公務(wù)攝影拍攝技巧分享課件
- 2023持續(xù)炎癥-免疫抑制-分解代謝綜合征(PICS)
- 華東師范大學(xué) PPT 37
- 人教版《小數(shù)的初步認(rèn)識(shí)》
- 2023年江蘇省南京市鼓樓區(qū)中考道德與法治一模試卷及答案解析
- 可降解的二階微分方程課件
- 法醫(yī)學(xué)智慧樹知到答案章節(jié)測(cè)試2023年中南大學(xué)
- 02S701磚砌化糞池標(biāo)準(zhǔn)圖集
- JJG 945-2010微量氧分析儀
評(píng)論
0/150
提交評(píng)論