第05講-類(lèi)和對(duì)象(下)_第1頁(yè)
第05講-類(lèi)和對(duì)象(下)_第2頁(yè)
第05講-類(lèi)和對(duì)象(下)_第3頁(yè)
第05講-類(lèi)和對(duì)象(下)_第4頁(yè)
第05講-類(lèi)和對(duì)象(下)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

類(lèi)和對(duì)象〔下〕類(lèi)構(gòu)造器構(gòu)造方法是一個(gè)特殊的方法。Java中的每個(gè)類(lèi)都有構(gòu)造方法,用來(lái)初始化該類(lèi)的一個(gè)對(duì)象。構(gòu)造方法具有和類(lèi)名相同的名稱(chēng),而且不返回任何數(shù)據(jù)類(lèi)型。重載經(jīng)常用于構(gòu)造方法。每個(gè)類(lèi)都至少有一個(gè)構(gòu)造器,如果沒(méi)有定義構(gòu)造器,那么系統(tǒng)將自動(dòng)提供一個(gè)默認(rèn)的不帶任何參數(shù)的構(gòu)造器默認(rèn)構(gòu)造方法如果已經(jīng)定義了一個(gè)構(gòu)造器〔無(wú)論是否有參數(shù)〕,編譯程序都不會(huì)幫我們自動(dòng)合成一個(gè)。構(gòu)造方法只能由new運(yùn)算符調(diào)用構(gòu)造器是一個(gè)特殊的方法:沒(méi)有返回類(lèi)型創(chuàng)立對(duì)象時(shí)自動(dòng)調(diào)用不能顯式的調(diào)用可以重載,但不會(huì)被子類(lèi)繼承作用是初始化數(shù)據(jù)1/8/20242類(lèi)和對(duì)象〔下〕對(duì)象的創(chuàng)立和使用對(duì)象的創(chuàng)立包括聲明、實(shí)例化和初始化。聲明,創(chuàng)立類(lèi)的對(duì)象引用 CarObjectmyCar1; CarObjectmyCar2; 這個(gè)變量沒(méi)有定義一個(gè)對(duì)象。實(shí)際上,它只是一個(gè)能夠引用對(duì)象的簡(jiǎn)單變量

1/8/20243類(lèi)和對(duì)象〔下〕對(duì)象的創(chuàng)立和使用運(yùn)算符new為對(duì)象分配內(nèi)存空間,初始化類(lèi)變量,調(diào)用對(duì)象的構(gòu)造方法,返回對(duì)象引用myCar1=newCarObject()myCar2=newCarObject(2,2,185);也可以將聲明和創(chuàng)立對(duì)象合起來(lái)寫(xiě)CarObjectmyCar3=newCarObject();1/8/20244類(lèi)和對(duì)象〔下〕對(duì)象的創(chuàng)立和使用1/8/20245類(lèi)和對(duì)象〔下〕對(duì)象的引用思考A: 假設(shè)執(zhí)行:CarObjectmyCar1=newCarObject(); CarObjectmyCar2=myCar1;思考B: 假設(shè)執(zhí)行:CarObjectmyCar1=newCarObject(); myCar1=newCarObject();

后的對(duì)象狀態(tài)及其引用1/8/20246類(lèi)和對(duì)象〔下〕對(duì)象的創(chuàng)立和使用在創(chuàng)立而未初始化類(lèi)變量時(shí),類(lèi)變量具有默認(rèn)值 數(shù)據(jù)類(lèi)型 默認(rèn)值 數(shù)值型 0 布爾型 false 字符型 0 對(duì)象 null1/8/20247類(lèi)和對(duì)象〔下〕對(duì)象的創(chuàng)立和使用 使用“對(duì)象名.對(duì)象成員〞的方式訪問(wèn)對(duì)象成員〔包括屬性和方法〕;

myCar1.turnOn(); myCar1.accelerate(); System.out.println("CurrentSpeed:"+car.getCurrentSpeed());1/8/20248類(lèi)和對(duì)象〔下〕對(duì)象的創(chuàng)立和使用

publicclassCarTest3{ publicstaticvoidmain(String[]args){ //Definetheattributesofthecar CarObjectcar=newCarObject(CarObject.V10,CarObject.CONVERTIBLE,185); //Dosomethingswiththecar car.turnOn(); for(inti=0;i<10;i++){ car.accelerate(); System.out.println("CurrentSpeed:"+car.getCurrentSpeed()); } ……. car.turnOff(); } }1/8/20249類(lèi)和對(duì)象〔下〕對(duì)象的去除當(dāng)不存在對(duì)一個(gè)對(duì)象的引用時(shí),該對(duì)象成為一個(gè)無(wú)用對(duì)象。Java的垃圾收集器自動(dòng)掃描對(duì)象的動(dòng)態(tài)內(nèi)存區(qū),把沒(méi)有引用的對(duì)象作為垃圾收集起來(lái)并釋放。

System.gc();

當(dāng)系統(tǒng)內(nèi)存用盡或調(diào)用System.gc()要求垃圾回收時(shí),垃圾回收線程與系統(tǒng)同步運(yùn)行。1/8/202410類(lèi)和對(duì)象〔下〕this關(guān)鍵字在每個(gè)類(lèi)實(shí)例中都有一個(gè)隱含的this變量,this變量可以訪問(wèn)所有的類(lèi)信息:包括類(lèi)變量和類(lèi)方法 如:this.對(duì)象成員使用this關(guān)鍵字可以顯式的限定所引用的變量,不必另外設(shè)計(jì)命名約定來(lái)區(qū)分參數(shù)和類(lèi)變量

publicvoidsetTopSpeed(inttopSpeed){

if(topSpeed>0){

this.topSpeed=topSpeed;

}

} this也可以在一個(gè)構(gòu)造方法中調(diào)用該類(lèi)的另一個(gè)構(gòu)造方法this()this(s1,n1)this也可以作為一個(gè)方法的參數(shù),super但是不能1/8/202411類(lèi)和對(duì)象〔下〕匿名〔初始化〕語(yǔ)句塊publicclassCar{{(“init〞);speed=10;}privateintspeed;privateStringcarType;publicCar(){}}任何一個(gè)構(gòu)造方法都會(huì)首先調(diào)用該匿名(初始化)語(yǔ)句塊.1/8/202412類(lèi)和對(duì)象〔下〕final實(shí)例字段實(shí)例字段可以聲明為final,在對(duì)象構(gòu)造時(shí),必須被初始化,且不能被修改。一般把那種在生命周期不會(huì)發(fā)生改變的字段標(biāo)記為final

如汽車(chē)的出廠編號(hào)

privatefinalintserialNumber;1/8/202413類(lèi)和對(duì)象〔下〕靜態(tài)類(lèi)成員static 有時(shí)你希望定義一個(gè)類(lèi)成員,使它的使用完全獨(dú)立于該類(lèi)的任何對(duì)象。通常情況下,類(lèi)成員必須通過(guò)它的類(lèi)的對(duì)象訪問(wèn),但是可以創(chuàng)立這樣一個(gè)成員,就不必引用特定的實(shí)例了。在成員的聲明前面加上關(guān)鍵字static(靜態(tài)的)就能創(chuàng)立這樣的成員。如果一個(gè)成員被聲明為static,它就能夠在它的類(lèi)的任何對(duì)象創(chuàng)立之前被訪問(wèn),而不必引用任何對(duì)象。static可以修飾變量與方法,還有內(nèi)部類(lèi)等用static修飾的變量與方法稱(chēng)為類(lèi)變量/類(lèi)方法類(lèi)變量/類(lèi)方法無(wú)需創(chuàng)立對(duì)象就可以調(diào)用,調(diào)用方法是:類(lèi)名.類(lèi)變量/類(lèi)方法1/8/202414類(lèi)和對(duì)象〔下〕靜態(tài)類(lèi)變量聲明為static的變量實(shí)質(zhì)上就是全局變量。當(dāng)聲明一個(gè)對(duì)象時(shí),并不產(chǎn)生static變量的拷貝,而是該類(lèi)所有的實(shí)例變量共用同一個(gè)static變量。如汽車(chē)的總數(shù)

privatestaticintnumber;

1/8/202415類(lèi)和對(duì)象〔下〕靜態(tài)方法聲明為static的方法有以下幾條限制:1、它們僅能調(diào)用其他的static方法。2、它們只能訪問(wèn)static數(shù)據(jù)。3、它們不能以任何方式引用this或super思考:哪些情況可以使用static方法一個(gè)方法不需要訪問(wèn)對(duì)象狀態(tài),其所需參數(shù)通過(guò)參數(shù)傳入一個(gè)方法只需要訪問(wèn)類(lèi)的靜態(tài)域或著靜態(tài)方法

1/8/202416類(lèi)和對(duì)象〔下〕靜態(tài)塊在類(lèi)的定義體中、方法的外部可包含static語(yǔ)句塊static語(yǔ)句塊僅在其所屬的類(lèi)被載入時(shí)執(zhí)行一次static塊通常用于初始化化static(類(lèi))屬性

1/8/202417類(lèi)和對(duì)象〔下〕靜態(tài)初始化publicclassCarObject{ privatestaticintnumber; …… static{ number=0; } ……}特例:publicclassSsTest{ static{ System.out.println("thisisSsTeststaticblock"); } publicstaticvoidmain(String[]args){ }}1/8/202418類(lèi)和對(duì)象〔下〕靜態(tài)常量靜態(tài)變量并不常見(jiàn),靜態(tài)常量很普遍,實(shí)質(zhì)上就是公共全局常量如:

publicclassMath { ... ... }可以直接通過(guò)類(lèi)名.常量名訪問(wèn)如:

Math.PI1/8/202419類(lèi)和對(duì)象〔下〕public關(guān)鍵字public類(lèi)class可以由public來(lái)修飾,也可以沒(méi)有修飾符號(hào)//Car只能被當(dāng)前包內(nèi)的類(lèi)訪問(wèn)classCar{}//Car1可以被其他包內(nèi)的類(lèi)訪問(wèn)publicclassCar1{}一個(gè)java源文件內(nèi)只能有一個(gè)public修飾的類(lèi),并且該java文件和該類(lèi)同名,可以有多個(gè)非public修飾的類(lèi)如果一個(gè)java源文件中沒(méi)有public修飾類(lèi),那么該java文件可以按照文件系統(tǒng)任意命名,不受該文件內(nèi)類(lèi)名的約束1/8/202420類(lèi)和對(duì)象〔下〕java包分割系統(tǒng)包package包的命名原那么導(dǎo)入import與include環(huán)境變量1/8/202421類(lèi)和對(duì)象〔下〕掌握重點(diǎn)理解面向?qū)ο蟮乃枷搿⒎庋b性類(lèi)的結(jié)構(gòu)、定義構(gòu)造器的作用理解對(duì)象的引用實(shí)現(xiàn)封裝的手段this的用法

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論