版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java面向?qū)ο蟪绦蛟O(shè)計(jì)一
----類和對(duì)象封裝第四章預(yù)習(xí)檢查類和對(duì)象的關(guān)系方法如何定義封裝的概念掌握面向?qū)ο蟮乃枷胝祁惡蛯?duì)象的使用方法的定義和使用方法的重載構(gòu)造函數(shù)封裝組合類和嵌套類本章目標(biāo)面向?qū)ο蠛兔嫦蜻^程面向?qū)ο笫窍鄬?duì)于面向過程而言的面向過程本質(zhì)上是面向機(jī)器,而不是面向問題,和實(shí)際生活相偏離面向?qū)ο蟮姆先藗兯季S的一種方式,能夠比較好的將現(xiàn)實(shí)生活和程序相結(jié)合,便于思考和實(shí)現(xiàn)面向?qū)ο螅∣O)的優(yōu)點(diǎn)與人類的思維習(xí)慣一致把人類解決問題的思維過程轉(zhuǎn)變?yōu)槌绦蚰軌蚶斫獾倪^程信息隱藏,提高了程序的可維護(hù)性和安全性封裝實(shí)現(xiàn)了模塊化和信息隱藏封裝使得在對(duì)象外部不能隨意訪問對(duì)象的屬性和方法提高了程序的可重用性一個(gè)類可以創(chuàng)建多個(gè)對(duì)象實(shí)例,增加了重用性對(duì)象人們把生活中的每個(gè)物體都看成是一個(gè)對(duì)象,也就是實(shí)實(shí)在在存在的,看得見摸得著,由一組屬性和方法構(gòu)成屬性——對(duì)象具有的各種特征每個(gè)對(duì)象的每個(gè)屬性都擁有特定值方法——對(duì)象執(zhí)行的操作每個(gè)對(duì)象的操作也不一定相同封裝對(duì)象同時(shí)具有屬性和方法兩項(xiàng)特性對(duì)象的屬性和方法通常被封裝在一起,共同體現(xiàn)事物的特性,二者相輔相承,不能分割誰看見過只有“完好的零件和顏色”而不能開動(dòng)的汽車?類顧客類轎車類
…………類是模子,確定對(duì)象將會(huì)擁有的特征(屬性)和行為(方法)類具有相同屬性和方法的一組對(duì)象的集合類是對(duì)象的類型不同于int類型:具有方法各種口味的球狀冰淇淋類和對(duì)象的關(guān)系類是抽象的概念,僅僅是模板,比如說:“人”對(duì)象是一個(gè)你能夠看得到、摸得著的具體實(shí)體小布什普京克林頓……“人”類特征(屬性)年齡體重行為(方法)衣食住行Java是面向?qū)ο蟮恼Z言
所有Java程序都以類class為組織單元關(guān)鍵字class定義自定義的數(shù)據(jù)類型
public
classHelloWorld{
publicstaticvoidmain(String[]args){ System.out.println("HelloWorld!!!"); }}Java類模板類將現(xiàn)實(shí)世界中的概念模擬到計(jì)算機(jī)程序中publicclass
類名{
//定義屬性部分屬性1的類型屬性1;
屬性2的類型屬性2;…
屬性n的類型屬性n;
//定義方法部分方法1;
方法2;…
方法m;}如何定義類定義一個(gè)類的步驟1、定義類名----命名規(guī)則2、編寫類的屬性----就是成員變量3、編寫類的方法----馬上講解如何創(chuàng)建和使用對(duì)象使用對(duì)象的步驟:創(chuàng)建對(duì)象類名對(duì)象名=new類名();引用對(duì)象成員:使用“.”進(jìn)行以下操作引用類的屬性:對(duì)象名.屬性引用類的方法:對(duì)象名.方法名()Schoolcenter=newSchool();="北京中心";//給name屬性賦值center.showCenter(); //調(diào)用showCenter()方法如何定義類的方法類的方法定義類的某種行為(或功能)方法的定義方法的名稱方法的主體方法返回的數(shù)據(jù)類型定義類的方法public返回值類型方法名(){//這里編寫方法的主體}步驟一:定義方法名以及返回值步驟二:編寫方法體方法的返回值兩種情況如果方法具有返回值,方法中必須使用關(guān)鍵字return返回該值,返回類型為該返回值的類型如果方法沒有返回值,返回類型為voidpublicclassStudent{Stringname="張三";publicvoidgetName(){
returnname;}……}返回類型要匹配return表達(dá)式;編譯錯(cuò)誤作用:跳出方法給出結(jié)果方法調(diào)用方法是個(gè)“黑匣子”,完成某個(gè)特定的應(yīng)用程序功能,并返回結(jié)果方法調(diào)用:執(zhí)行方法中包含的語句
對(duì)象名.方法名();方法調(diào)用小結(jié)方法之間允許相互調(diào)用,不需要知道方法的具體實(shí)現(xiàn),提高了效率
情況
舉例Student類的方法a()調(diào)用Student類的方法b(),直接調(diào)用publicvoida(){b();//調(diào)用b()}Student類的方法a()調(diào)用Teacher類的方法b(),先創(chuàng)建類對(duì)象,然后使用“.”調(diào)用publicvoida(){Teachert=newTeacher();t.b();//調(diào)用Teacher類的b()}為什么要用帶參數(shù)的方法工作原理新鮮桃汁新鮮蘋果汁新鮮梨汁輸出三種果汁如何使用帶參數(shù)的方法3-1定義帶參數(shù)的方法調(diào)用帶參數(shù)的方法publicclassZhazhi{
publicStringzhazhi(Stringfruit){Stringjuice=fruit+"汁";returnjuice;}}/*調(diào)用zhazhi方法*/ZhazhimyZhazhi=newZhazhi();StringmyFruit="蘋果";StringmyJuice=myZhazhi.zhazhi(myFruit);System.out.println(myJuice);參數(shù)列表:(數(shù)據(jù)類型參數(shù)1,數(shù)據(jù)類型參數(shù)2…)調(diào)用方法,傳遞的參數(shù)要與參數(shù)列表一一對(duì)應(yīng)如何使用帶參數(shù)的方法3-2<訪問修飾符>返回類型<方法名>(<形式參數(shù)列表>){ //方法的主體}該方法允許被訪問調(diào)用的權(quán)限范圍方法返回值的類型publicclassStudentsBiz{ String[]names=newString[30];
publicvoidaddName(Stringname){
//增加學(xué)生姓名
} publicvoidshowNames(){
//顯示全部學(xué)生姓名
}}傳送給方法的形參列表一個(gè)形式參數(shù)沒有返回值如何使用帶參數(shù)的方法3-3publicstaticvoidmain(String[]args){
StudentsBizst=newStudentsBiz();Scannerinput=newScanner(System.in);for(inti=0;i<5;i++){System.out.print("請(qǐng)輸入學(xué)生姓名:");StringnewName=input.next();
st.addName(newName);}st.showNames();
}實(shí)參的類型、數(shù)量、順序都要與形參一一對(duì)應(yīng)先實(shí)例化對(duì)象,再使用方法調(diào)用帶參數(shù)的方法對(duì)象名.方法名(實(shí)參1,實(shí)參2,……,實(shí)參n)實(shí)參列表理解方法重載生活中的方法重載表演類歌曲樂器劇本方法參數(shù)方法體publicclassPlayer{
publicvoidPlay(劇本){//根據(jù)劇本表演}publicvoidPlay(歌曲){//演唱歌曲}
publicvoidPlay(鋼琴){//彈奏鋼琴}}方法重載:同一個(gè)類中,方法名相同,參數(shù)項(xiàng)不同(參數(shù)類型不同、參數(shù)個(gè)數(shù)不同)方法重載方法重載,指同一個(gè)類中多個(gè)方法:方法名相同參數(shù)列表不同與返回值、訪問修飾符無關(guān)
publicStudent(){//代碼
}publicStudent(Stringname,intage){//代碼}System.out.println(45);System.out.println(true);System.out.println("狗在玩耍!");構(gòu)造方法5-1對(duì)象初始化Studentstu=newStudent();=name;//賦初值stu.age=age;publicclassStudent{//屬性
//無參構(gòu)造方法
publicStudent(){
name="小明";
age=23;
}}使用構(gòu)造方法:Studentstu=new
Student();能否在創(chuàng)建對(duì)象的同時(shí)就完成賦值?構(gòu)造方法構(gòu)造方法5-2構(gòu)造方法是類中一種特殊的方法,完成對(duì)象的初始化,通過new關(guān)鍵字調(diào)用構(gòu)造方法名與類名相同,不返回任何值public
構(gòu)造方法名(){//初始化代碼}與類名相同沒有返回值類型publicclassStudent{
publicStudent(){
name="小明";
age=23;
}}可以指定參數(shù)在構(gòu)造函數(shù)中,給屬性設(shè)置默認(rèn)值不同對(duì)象實(shí)例化后,仍需設(shè)置不同屬性值;能否實(shí)例化時(shí)一次性設(shè)置對(duì)象真正屬性值?編寫帶參構(gòu)造函數(shù)5-3帶參數(shù)的構(gòu)造函數(shù)publicclassStudent{
//有參構(gòu)造方法 publicStudent(Stringname,intage){ =name; this.age=age; }}將參數(shù)的值,分別賦給當(dāng)前實(shí)例的屬性this的用法5-4this關(guān)鍵字指代當(dāng)前類調(diào)用屬性調(diào)用方法調(diào)用構(gòu)造方法this.health=100;
this.name="大黃";this.print();
this();如果使用,必須是構(gòu)造方法中的第一條語句this("小黑",100,100,"雄");構(gòu)造方法5-5閱讀代碼,說出運(yùn)行結(jié)果,并指出原因classPenguin{publicvoidPenguin(){ health=10;sex="雄";System.out.println("執(zhí)行構(gòu)造方法");}publicvoidprint(){System.out.println("企鵝的名字是"+name+",健康值是"+health+",性別是"+sex);}}Penguinpgn3=newPenguin();pgn3.print();有返回值類型,不是構(gòu)造方法類的隱式構(gòu)造方法構(gòu)造兩個(gè)對(duì)象//實(shí)例化一個(gè)學(xué)生員對(duì)象Studentstu=newStudent(name,age);
//實(shí)例化另一個(gè)程序員對(duì)象Studentstu1=newStudent();…..punlicStudent{
//省略字段、屬性publicStudent(stringname,intage){//…省略}
}編譯錯(cuò)誤:不包含采用“0”參數(shù)的構(gòu)造方法
演示示例:隱式構(gòu)造函數(shù)每個(gè)類都默認(rèn)有一個(gè)無參數(shù)的構(gòu)造方法,一旦手動(dòng)添加了構(gòu)造方法,系統(tǒng)就不會(huì)再給類添加無參構(gòu)造方法為什么要使用封裝下面代碼有什么問題?如何解決上面設(shè)計(jì)的缺陷?Dogd=newDog();d.health=1000;不合理的賦值
使用封裝
什么是封裝面向?qū)ο笕筇卣髦弧庋b封裝的概念封裝的好處封裝:將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法來實(shí)現(xiàn)對(duì)隱藏信息的操作和訪問
隱藏類的實(shí)現(xiàn)細(xì)節(jié)只能通過規(guī)定方法訪問數(shù)據(jù)方便加入控制語句方便修改實(shí)現(xiàn)如何使用封裝封裝的步驟修改屬性的可見性創(chuàng)建getter/setter方法在getter/setter方法中加入屬性控制語句設(shè)為private用于屬性的讀寫對(duì)屬性值的合法性進(jìn)行判斷classDog{
privateStringname="旺財(cái)";//昵稱
privateinthealth=100;//健康值
privateintlove=0;//親密度
privateStringstrain="拉布拉多犬";//品種
publicintgetHealth(){returnhealth;}
publicvoidsetHealth
(inthealth){if(health>100||health<
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度瓷磚行業(yè)品牌戰(zhàn)略規(guī)劃與合作合同2篇
- 二零二五年度商業(yè)寫字樓項(xiàng)目獨(dú)家營銷代理協(xié)議
- 2024煤炭買賣居間合同協(xié)議
- 二零二五年度油煙機(jī)安裝與節(jié)能環(huán)保認(rèn)證服務(wù)合同3篇
- 山東職業(yè)學(xué)院《復(fù)變函數(shù)和積分變換》2023-2024學(xué)年第一學(xué)期期末試卷
- 景德鎮(zhèn)藝術(shù)職業(yè)大學(xué)《應(yīng)用回歸分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年:版權(quán)代理保密條款
- 二零二五年度環(huán)保科技研發(fā)成果轉(zhuǎn)化與應(yīng)用合同3篇
- 2025年人教版九年級(jí)化學(xué)寒假預(yù)習(xí) 第01講 溶液及其應(yīng)用
- 二零二五年度新型投資基金交易服務(wù)全面合作協(xié)議3篇
- 員工互評(píng)表(含指標(biāo))
- 小收納大世界-整li與收納(黑龍江幼兒師范高等??茖W(xué)校)知到智慧樹答案
- 河南省鄭州市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試題含解析
- 2024-2025學(xué)年外研版七年級(jí)英語下冊(cè) Unit1單詞背誦(不帶音標(biāo))
- 孕產(chǎn)婦高危五色管理(醫(yī)學(xué)講座培訓(xùn)課件)
- 幼兒體適能培訓(xùn)
- 重癥??谱o(hù)士理論考試試題及答案
- 燃?xì)猱厴I(yè)論文開題報(bào)告
- 2024年低壓電工資格考試必考題庫及答案(共415題)
- 劉潤(rùn)年度演講2024
- 《漢書》導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論