![第三類與對(duì)象_第1頁(yè)](http://file4.renrendoc.com/view/66115a4ca1d18cdbc9ac284aa09549de/66115a4ca1d18cdbc9ac284aa09549de1.gif)
![第三類與對(duì)象_第2頁(yè)](http://file4.renrendoc.com/view/66115a4ca1d18cdbc9ac284aa09549de/66115a4ca1d18cdbc9ac284aa09549de2.gif)
![第三類與對(duì)象_第3頁(yè)](http://file4.renrendoc.com/view/66115a4ca1d18cdbc9ac284aa09549de/66115a4ca1d18cdbc9ac284aa09549de3.gif)
![第三類與對(duì)象_第4頁(yè)](http://file4.renrendoc.com/view/66115a4ca1d18cdbc9ac284aa09549de/66115a4ca1d18cdbc9ac284aa09549de4.gif)
![第三類與對(duì)象_第5頁(yè)](http://file4.renrendoc.com/view/66115a4ca1d18cdbc9ac284aa09549de/66115a4ca1d18cdbc9ac284aa09549de5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三類與對(duì)象1第1頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月主要內(nèi)容1、面向?qū)ο蟮母拍?、面向?qū)ο蟮幕咎卣?、類,變量,數(shù)據(jù)成員與方法4、對(duì)象的創(chuàng)建,初始化5、static,final變量及方法6、方法重載7、This關(guān)鍵字8、對(duì)象的回收9、包10、Java基礎(chǔ)類庫(kù)(教材4.6.1)11、類的訪問(wèn)控制參考thinkinginjava第一,四,五章教材第二章,第四章4.6節(jié)包的應(yīng)用2第2頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月1、面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)與結(jié)構(gòu)化程序設(shè)計(jì)方法相比,更符合人類認(rèn)識(shí)現(xiàn)實(shí)世界的思維方式已成為程序設(shè)計(jì)的主流方向涉及的主要概念封裝繼承多態(tài)3第3頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月現(xiàn)實(shí)世界中萬(wàn)物皆對(duì)象都具有各自的屬性(名詞),對(duì)外界都呈現(xiàn)各自的行為(動(dòng)詞)程序中一切都是對(duì)象都具有標(biāo)識(shí)(identity),屬性和行為(方法)通過(guò)一個(gè)或多個(gè)變量來(lái)保存其狀態(tài)通過(guò)方法(method)實(shí)現(xiàn)他的行為1.1 對(duì)象4第4頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月例:鐘表數(shù)據(jù)(屬性)intHour;intMinute;intSecond;方法(行為)SetTime();ShowTime();5第5頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月例:學(xué)生數(shù)據(jù)(屬性)Stringname;intID;intEng;intMath;方法(行為)統(tǒng)計(jì)成績(jī)
getEng(),getMath()getTotal()6第6頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月將屬性及行為相同或相似的對(duì)象歸為一 類。類可以看成是對(duì)象的抽象,代表了此類對(duì)象所具有的共有屬性和行為??梢詫F(xiàn)實(shí)生活中的對(duì)象經(jīng)過(guò)抽象,映射為程序中的對(duì)象。對(duì)象在程序中是通過(guò)一種抽象數(shù)據(jù)類型來(lái)描述的,這種抽象數(shù)據(jù)類型稱為類(Class)。對(duì)象是類的具體實(shí)例。1.2 類7第7頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月例如:類Car及Car的對(duì)象Car的對(duì)象們:CarredCar=newCar();CargreenCar=newCar()CaryellowCar=newCar();……redCar.brake();greenCar.speedUp();ClassCar{intcolor_number;intdoor_number;intspeed;
voidbrake(){…}voidspeedUp(){…}voidslowDown(){…}}
抽象數(shù)據(jù)類型Car8第8頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月2 面向?qū)ο蠡咎卣鞣庋b:將對(duì)象的數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起封裝定義程序如何引用對(duì)象的數(shù)據(jù),封裝實(shí)際上使用方法將類的數(shù)據(jù)隱藏起來(lái),控制用戶對(duì)類的修改和訪問(wèn)數(shù)據(jù)的程度。私有數(shù)據(jù)方法方法數(shù)據(jù)對(duì)象A對(duì)象B公有數(shù)據(jù)9第9頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月繼承是指新的類可以獲得已有類(稱為超類、基類或父類)的屬性和行為,稱新類為已有類的派生類(也稱為子類)在繼承過(guò)程中派生類繼承了基類的特性,包括方法和實(shí)例變量派生類也可修改繼承的方法或增加新的方法,使之更適合特殊的需要有助于解決軟件的可重用性問(wèn)題,使程序結(jié)構(gòu)清晰,降低了編碼和維護(hù)的工作量10第10頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月TypeBrandTypeBrandHornTypeBrandEngineAirbagTypeBrandSeatsVehicleBicycleMotoVehicleAirplane11第11頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月多態(tài)一個(gè)程序中同名的不同方法共存主要通過(guò)子類對(duì)父類方法的覆蓋來(lái)實(shí)現(xiàn)不同類的對(duì)象可以響應(yīng)同名的消息(方法),具體的實(shí)現(xiàn)方法卻不同使語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好地解決了應(yīng)用程序方法同名問(wèn)題12第12頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月3、類,變量,數(shù)據(jù)成員及方法
——3.1類的聲明聲明形式
[public][abstract|final]class
類名稱
[extends
父類名稱][implements
接口名稱列表] {
數(shù)據(jù)成員聲明及初始化;
(field,constructor)
方法聲明及方法實(shí)現(xiàn);
(methoddeclaration) }classCar{ intcolor_number; intdoor_number; intspeed;
voidbrake(){…} voidspeedUp(){…} voidslowDown(){…} }
}13第13頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月關(guān)鍵字Class表明其后聲明的是一個(gè)類。extends如果所聲明的類是從某一父類派生而來(lái),那么,父類的名字應(yīng)寫(xiě)在extends之后implements如果所聲明的類要實(shí)現(xiàn)某些接口,那么,接口的名字應(yīng)寫(xiě)在implements之后14第14頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月修飾符可以有多個(gè),用來(lái)限定類的使用方式public表明此類為公有類abstract指明此類為抽象類final指明此類為終結(jié)類 類聲明體數(shù)據(jù)成員聲明及初始化可以有多個(gè)方法聲明及方法實(shí)現(xiàn)可以有多個(gè)15第15頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月例:鐘表類Clock.javapublicclassClock{//成員變量
inthour; intminute; intsecond;//成員方法
publicvoidsetTime(intnewH,intnewM,intnewS){ hour=newH; minute=newM; second=news;}publicvoidshowTime(){ System.out.println(hour+":"+minute+":"+second);}}16第16頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月變量除了存儲(chǔ)基本數(shù)據(jù)類型的數(shù)據(jù),還能存儲(chǔ)引用類型的變量3.2 變量及數(shù)據(jù)成員17第17頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月數(shù)據(jù)成員(也稱為成員變量)表示Java類中的數(shù)據(jù)變量聲明數(shù)據(jù)成員必須給出變量名及其所屬的類型,同時(shí)還可以指定其他特性在一個(gè)類中成員變量名是唯一的數(shù)據(jù)成員的類型可以是Java中任意的數(shù)據(jù)類型(基本數(shù)據(jù)類型,類,接口,數(shù)組)18第18頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月聲明格式
[public|protected|private] [static][final] 變量數(shù)據(jù)類型變量名1[=變量初值], 變量名2[=變量初值],…;
staticintsum=7; privateStringgardenName; privateFruitbanana;
……格式說(shuō)明Public,protected,private為訪問(wèn)控制符,static指明這是一個(gè)靜態(tài)成員變量(類變量)final指明變量的值不能被修改19第19頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月3.3 方法方法是在類中定義,用來(lái)實(shí)現(xiàn)對(duì)象操作的函數(shù)。聲明格式
[public|protected|private]
[static][
final][abstract][synchronized]
返回類型方法名([參數(shù)列表])[throwsexceptionList] {
方法體 }返回類型可以是任意的Java數(shù)據(jù)類型,當(dāng)一個(gè)方法不需要返回值時(shí),返回類型為void。20第20頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月參數(shù)的類型可以是簡(jiǎn)單數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型(數(shù)組、類或接口),傳遞方式都是采用傳值的方式完成,也就是,對(duì)參數(shù)值的任何改動(dòng)都只限于這個(gè)方法的作用域內(nèi)。方法體是對(duì)方法的實(shí)現(xiàn)。它包括局部變量的聲明以及所有合法的Java指令。局部變量的作用域只在該方法內(nèi)部。21第21頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月一個(gè)簡(jiǎn)單的類:類的定義放在Car.java里,測(cè)試代碼放入CarDemo.java里,運(yùn)行時(shí),這兩個(gè)文件放在同一目錄下?;蛘邇啥未a放在同一文件CarDemo.javaclassCar{intcar_number;voidset_number(intcar_num){car_number=car_num;}voidshow_number(){System.out.println(“MycarNo.is:”+car_number);}}classCarDemo{publicstaticvoidmain(Stringargs[]){CarDemoCar=newCar();DemoCar.set_number(3456);DemoCar.show_number();}}MycarNo.is:345622第22頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月或者把main()也放入Car類里,文件名為Car.java,適用于代碼少的程序。publicclassCar{intcar_number;voidset_number(intcar_num){car_number=car_num;}voidshow_number(){System.out.println(“MycarNo.is:”+car_number);}publicstaticvoidmain(Stringargs[]){ CarDemoCar=newCar(); DemoCar.set_number(3838); DemoCar.show_number();}}23第23頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月4、對(duì)象的創(chuàng)建,初始化對(duì)象的創(chuàng)建與C++類似,同樣的Java也提供了構(gòu)造方法(constructor)在對(duì)象創(chuàng)建時(shí)被自動(dòng)調(diào)用,進(jìn)行對(duì)象初始化。24第24頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月4.1 對(duì)象的創(chuàng)建對(duì)象的聲明格式
類名變量名例如Car是已經(jīng)聲明的類名,則下面語(yǔ)句聲明了一個(gè)CarDemo對(duì)象(也叫做實(shí)例)
CarCarDemo;
25第25頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月對(duì)象的創(chuàng)建生成實(shí)例的格式:
new<類名>()
例如:CarDemo=newCar()或者聲明與創(chuàng)建合為一步:
CarCarDemo=newCar();
其作用是:在內(nèi)存中為此對(duì)象分配內(nèi)存空間返回對(duì)象的引用(reference,相當(dāng)于對(duì)象的存儲(chǔ)地址)引用變量的初值為null,也可以被賦以空值例如:CarDemo=null;見(jiàn)例:CircumferenceTest.java26第26頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月4.2 對(duì)象的初始化
(ObjectInitialization)與C++相似,新創(chuàng)建對(duì)象的初始化是通過(guò)構(gòu)造方法(constructor)來(lái)完成27第27頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月4.2.1 構(gòu)造方法定義構(gòu)造方法與C++的構(gòu)造函數(shù)相似是一種和類同名的特殊方法在創(chuàng)建對(duì)象時(shí)進(jìn)行初始化(對(duì)成員變量賦初值)Java中的每個(gè)類都有構(gòu)造方法,用來(lái)初始化該類的一個(gè)新的對(duì)象沒(méi)有定義構(gòu)造方法的類,系統(tǒng)自動(dòng)提供默認(rèn)的構(gòu)造方法28第28頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月構(gòu)造方法的特點(diǎn)方法名與類名相同沒(méi)有返回類型,修飾符void也不能有通常被聲明為公有的(public)可以有任意多個(gè)參數(shù)主要作用是完成對(duì)象的初始化工作不能在程序中顯式的調(diào)用在生成一個(gè)對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類的構(gòu)造方法為新生成的對(duì)象初始化一個(gè)帶有構(gòu)造方法的Cat類
例:MyConstructor.java29第29頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月StringtoString()StringtoString()是一個(gè)經(jīng)常用到的方法,當(dāng)需要把一個(gè)對(duì)象輸出到屏幕,就要用到此方法.實(shí)際上,Java的所有類都有一個(gè)默認(rèn)的toString(),例如System.out.println(newTime)就等價(jià)于System.out.println(newTime.toString);如果直接調(diào)用默認(rèn)的toString(),返回結(jié)果形式為: 對(duì)象類的名字@對(duì)象的地址。 見(jiàn)例:TimeStamp.java30第30頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月編譯后運(yùn)行結(jié)果如下:TimeStamp@7d772e解釋@之后的數(shù)值為對(duì)象newTime所指的存儲(chǔ)地址。31第31頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月如果自己重寫(xiě)TimeStamp.java,將對(duì)象的內(nèi)容轉(zhuǎn)換為字符串,再輸出到屏幕。見(jiàn)例:TimeStamp2.java可見(jiàn),使用toString()簡(jiǎn)化了代碼,不必再用多個(gè)println把對(duì)象的數(shù)據(jù)一一打印出來(lái)。另例:一個(gè)帶有constructor的Student.java聲明toString時(shí)需要注意以下幾點(diǎn):toString()必須為public;返回類型為String;方法的名稱必須為toString,且沒(méi)有參數(shù);在方法體中不要使用輸出方法System.out.println();32第32頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月1)系統(tǒng)提供的默認(rèn)構(gòu)造方法如果在類的聲明中沒(méi)有聲明構(gòu)造方法,則Java編譯器會(huì)提供一個(gè)默認(rèn)的構(gòu)造方法默認(rèn)的構(gòu)造方法沒(méi)有參數(shù),其方法體為空4.2.2 構(gòu)造方法種類
33第33頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月聲明一個(gè)銀行帳號(hào)類BankAcount存于文件BankAccount.java,及測(cè)試代碼BankTester,放于BankTester.java,這兩個(gè)文件放在同一個(gè)路徑下。
public
classBankAccount{//BankAccount.java String
ownerName;int
accountNumber;floatbalance;}publicclassBankTester{//BankTester.javapublicstaticvoidmain(Stringargs[]){
BankAccountmyAccount=newBankAccount();
System.out.println("ownerName="+ myAccount.ownerName);System.out.println("accountNumber="+myAccount.accountNumber); System.out.println("balance="+myAccount.balance); }}運(yùn)行結(jié)果ownerName=nullaccountNumber=0balance=0.034第34頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月2)以上的例子在設(shè)計(jì)上有不妥之處,容易創(chuàng)建一個(gè)無(wú)ID的銀行賬號(hào),所以應(yīng)當(dāng)為它提供一個(gè)帶參數(shù)的構(gòu)造方法。為BankAccount聲明一個(gè)有三個(gè)參數(shù)的構(gòu)造方法publicBankAccount(StringinitName,intinitAccountNumber,floatinitBalance){ownerName=initName;accountNumber=initAccountNumber;balance=initBalance;}35第35頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月而在main里就可以用來(lái)初始化對(duì)象:publicclassBankTester{ publicstaticvoidmain(Stringargs[]){ BankAccountmyAccount=newBankAccount(“Wu”,01123,300);….}思考:如果對(duì)象初始化值不是如上說(shuō)示的硬設(shè)入程序,程序應(yīng)該怎樣接收從外界,如鍵盤(pán)的用戶輸入?36第36頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月構(gòu)建一個(gè)Bush類,有兩個(gè)帶參數(shù)的構(gòu)造方法classBush{ Bush(inti){}Bush(inti,doubled){}}如果寫(xiě):newBush();
編譯器將要告訴你找不到對(duì)應(yīng)的構(gòu)造方法說(shuō)明用戶在進(jìn)行類聲明時(shí),如果沒(méi)有聲明任何構(gòu)造方法,系統(tǒng)會(huì)賦給此類一個(gè)默認(rèn)(無(wú)參)的構(gòu)造方法。但是,只要用戶聲明了構(gòu)造方法,即使沒(méi)有聲明無(wú)參的構(gòu)造方法,系統(tǒng)也不再賦默認(rèn)的構(gòu)造方法在聲明構(gòu)造方法時(shí),好的聲明習(xí)慣是不聲明構(gòu)造方法如果聲明,至少聲明一個(gè)無(wú)參構(gòu)造方法37第37頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月5、Static,final變量及方法
Static:(靜態(tài))類變量和(靜態(tài))類方法與C++一樣,類中有一種特殊的成員或方法,它不屬于某個(gè)對(duì)象,不能通過(guò)某個(gè)對(duì)象來(lái)引用,在聲明前加上static38第38頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月1、static變量 可以被所有的對(duì)象共享,生命周期從創(chuàng)建開(kāi)始到程序運(yùn)行結(jié)束。相當(dāng)于C語(yǔ)言中全局變量的作用。其它類可以不用通過(guò)創(chuàng)建該類的實(shí)例,直接通過(guò)類名訪問(wèn)它們。例:MelonEx.javaobjectachardataobjectcchardataObjectbchardatastaticintshare_dataobjectdchardata39第39頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月不正確的引用classStaticError{Stringmystring=“hello”;publicstaticvoidmain(Stringargs[]){System.out.println(mystring);}}編譯時(shí)錯(cuò)誤信息:nonstaticvariablemystringcannotbereferencedfromastaticcontext“System.out.println(mystring);”。為什么不正確:只有對(duì)象的方法可以訪問(wèn)對(duì)象的變量。40第40頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月解決的辦法1.將變量改成static變量classNoStaticError{
staticStringmystring=“hello”;publicstaticvoidmain(Stringargs[]){System.out.println(mystring);}}思考:如果NoStaticError類與main()分別存在兩個(gè)不同文件里,在main()里應(yīng)該怎樣調(diào)用mystring?41第41頁(yè),課件共46頁(yè),創(chuàng)作于2023年2月2.先創(chuàng)建一個(gè)類的對(duì)象,然后用對(duì)象來(lái)調(diào)用。classNoStaticError{Stringmystring=“hello”;publicstaticvoidmain(Stringargs[]){
NoStaticErrornoError;noError=newNoStat
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工現(xiàn)場(chǎng)施工防生物安全事故制度
- 小學(xué)生心理健康教育的校本課程設(shè)計(jì)研究
- DB4404T 72-2024電梯維修保養(yǎng)服務(wù)安全規(guī)范
- 不服合作合同爭(zhēng)議仲裁起訴狀范本
- 個(gè)人股權(quán)轉(zhuǎn)讓合作合同模板
- 兩人合伙創(chuàng)業(yè)合同范本
- 個(gè)人股權(quán)轉(zhuǎn)讓合同簡(jiǎn)單范文
- 二手房買賣合同簡(jiǎn)易版
- 個(gè)人公寓租賃合同范本
- 產(chǎn)學(xué)研一體化碩士專班合作協(xié)議合同
- 銷售人員課件教學(xué)課件
- 三級(jí)綜合醫(yī)院評(píng)審標(biāo)準(zhǔn)(2024年版)
- Lesson 6 What colour is it(教學(xué)設(shè)計(jì))-2023-2024學(xué)年接力版英語(yǔ)三年級(jí)下冊(cè)
- GB/T 4706.10-2024家用和類似用途電器的安全第10部分:按摩器具的特殊要求
- NB/T 11446-2023煤礦連采連充技術(shù)要求
- 2024年江蘇省蘇州市中考英語(yǔ)試題卷(含標(biāo)準(zhǔn)答案及解析)
- 第五單元任務(wù)二《準(zhǔn)備與排練》教學(xué)設(shè)計(jì) 統(tǒng)編版語(yǔ)文九年級(jí)下冊(cè)
- 全科醫(yī)學(xué)的基本原則和人文精神(人衛(wèi)第五版全科醫(yī)學(xué)概論)
- 船員健康知識(shí)課件
- 《揚(yáng)州東關(guān)街掠影》課件
- 《3-6歲兒童學(xué)習(xí)與發(fā)展指南》健康領(lǐng)域內(nèi)容目標(biāo)與指導(dǎo)
評(píng)論
0/150
提交評(píng)論