java封裝與構(gòu)造方法.ppt_第1頁(yè)
java封裝與構(gòu)造方法.ppt_第2頁(yè)
java封裝與構(gòu)造方法.ppt_第3頁(yè)
java封裝與構(gòu)造方法.ppt_第4頁(yè)
java封裝與構(gòu)造方法.ppt_第5頁(yè)
已閱讀5頁(yè),還剩23頁(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)介

面向?qū)ο蟮腏ava實(shí)現(xiàn)-封裝,第一章,2,課程地位,3,相關(guān)課程回顧,public class Test public static void main(String args) for(int i=0;i10;i+) System.out.println(i); System.out.println(i=10); ,請(qǐng)舉例說(shuō)明類與對(duì)象的區(qū)別與聯(lián)系。,超出了變量i的訪問(wèn)范圍,請(qǐng)指出下列Java代碼中存在的錯(cuò)誤,并改正。,4,就業(yè)技能結(jié)構(gòu)圖,5,預(yù)習(xí)檢查,舉例說(shuō)明什么是方法重載? Java中的構(gòu)造方法與實(shí)例方法,有什么區(qū)別?,6,本章任務(wù),升級(jí)HelloACCP,輸出ACCP5.0教員的自我介紹: 對(duì)屬性進(jìn)行封裝 用構(gòu)造方法實(shí)現(xiàn)對(duì)象成員的初始化 對(duì)構(gòu)造方法進(jìn)行重載,7,理解封裝的概念 掌握private關(guān)鍵字 掌握構(gòu)造方法 掌握方法重載,本章目標(biāo),8,為什么需要封裝 2-1,編寫一個(gè)類,代表ACCP5.0教員,要求: 具有屬性:姓名、年齡 具有行為:自我介紹 ACCP5.0教員的最小年齡要求:22歲,public class AccpTeacher1 public String name; / 教員姓名 public int age; /年齡 /* * 返回自我介紹的內(nèi)容 */ public String introduction() return “大家好!我是“ + name + “,我今年“+ age+“歲“; ,9,為什么需要封裝 2-2,編寫一個(gè)測(cè)試類,要求: 實(shí)例化一個(gè)教員對(duì)象,并對(duì)其初始化 在控制臺(tái)輸出該教員的自我介紹,public class AccpTeacher1Test public static void main(String args) AccpTeacher1 teacher = new AccpTeacher1(); = “李芳“; teacher.age =10; System.out.println(roduction(); ,要滿足教員的最小年齡要求,可以通過(guò)對(duì)屬性的封裝來(lái)實(shí)現(xiàn),10,什么是封裝,public class AccpTeacher2 private String name; / 教員姓名 / 返回教員姓名 public String getName() return name; / 設(shè)定教員姓名 public void setName(String name) = name; ,封裝,就是隱藏實(shí)現(xiàn)細(xì)節(jié) 將屬性私有化,提供公有方法訪問(wèn)私有屬性 通過(guò)這些公有方法訪問(wèn)私有屬性,AccpTeacher2 teacher = new AccpTeacher2(); teacher.setName (“李芳“); String tName = teacher.getName();,通過(guò)setter、getter方法訪問(wèn)name屬性,this代表當(dāng)前類的實(shí)例,11,如何實(shí)現(xiàn)封裝2-1,封裝的實(shí)現(xiàn): 1、修改屬性的可見性來(lái)限制對(duì)屬性的訪問(wèn) 2、為每個(gè)屬性創(chuàng)建一對(duì)賦值(setter)方法和取值(getter) 方法,用于對(duì)這些屬性的訪問(wèn) 3、在setter和getter方法中,加入對(duì)屬性的存取限制,public class AccpTeacher3 private String name; / 教員姓名 private int age; /年齡 public int getAge() return age; public void setAge(int age) if (age22) System.out.println(“錯(cuò)誤!最小年齡應(yīng)為22歲!“); this.age = 22; /如果不符合年齡要求,則賦予默認(rèn)值 else this.age = age; /此處省略對(duì)name屬性的setter、getter方法 ,1,2,3,12,如何實(shí)現(xiàn)封裝2-2,public class AccpTeacher3Test public static void main(String args) AccpTeacher3 teacher = new AccpTeacher3(); teacher.setName (“李芳“); teacher.setAge(10); System.out.println(roduction(); ,使用封裝,增加了數(shù)據(jù)訪問(wèn)限制,增強(qiáng)了程序的可維護(hù)性,錯(cuò)誤!最小年齡應(yīng)為22歲! 大家好!我是李芳,我今年22歲,測(cè)試類通過(guò)調(diào)用setter方法,為對(duì)象的各個(gè)屬性賦值,13,小結(jié) 1,使用private關(guān)鍵字修飾某個(gè)成員變量后,這個(gè)成員變量可以被同一包中的其它類訪問(wèn)嗎? 在Java程序中,代碼封裝帶給我們的好處是什么?,14,小結(jié) 2,請(qǐng)通過(guò)代碼封裝,實(shí)現(xiàn)如下需求: 編寫一個(gè)類Book,代表教材: 具有屬性:名稱(title)、頁(yè)數(shù)(pageNum),其中頁(yè)數(shù)不能少于200頁(yè),否則輸出錯(cuò)誤信息,并賦予默認(rèn)值200 為各屬性設(shè)置賦值和取值方法 具有方法:detail,用來(lái)在控制臺(tái)輸出每本教材的名稱和頁(yè)數(shù) 編寫測(cè)試類BookTest進(jìn)行測(cè)試:為Book對(duì)象的屬性賦予初始值,并調(diào)用Book對(duì)象的detail方法,看看輸出是否正確,完整代碼實(shí)現(xiàn),15,為什么需要構(gòu)造方法 2-1,開發(fā)ACCP5.0教員類AccpTeacher4,要求: 具有屬性:姓名、年齡、學(xué)歷、職位 具有行為:自我介紹,public class AccpTeacher4 private String name; / 姓名 private int age; / 年齡 private String education; / 學(xué)歷 private String position; / 職位 public String introduction() return “大家好!我是“ + name + “,我今年” + age + “歲,學(xué)歷“ +education+“,目前職位是“+position; public String getName() return name; public void setName(String myName) name = myName; / 以下是其他屬性的setter、getter方法,此處省略 ,16,為什么需要構(gòu)造方法 2-2,編寫一個(gè)測(cè)試類,要求: 實(shí)例化一個(gè)教員對(duì)象,并對(duì)其初始化 在控制臺(tái)輸出該教員的自我介紹,public class AccpTeacher4Test public static void main(String args) AccpTeacher4 teacher = new AccpTeacher4(); teacher.setName(“李芳“); teacher.setAge(23); teacher.setEducation(“本科“); System.out.println(roduction(); ,要簡(jiǎn)化對(duì)象初始化的代碼,可以通過(guò)構(gòu)造方法來(lái)解決,大家好!我是李芳,我今年23歲,學(xué)歷本科,目前職位是null,AccpTeacher4中有太多的屬性及對(duì)應(yīng)的setter方法,在初始化時(shí),很容易就忘記了,有沒(méi)有可能簡(jiǎn)化對(duì)象初始化的代碼?,17,什么是構(gòu)造方法,構(gòu)造方法負(fù)責(zé)對(duì)象成員的初始化工作,為實(shí)例變量賦予合適的初始值 構(gòu)造方法必須滿足以下語(yǔ)法規(guī)則: 1、方法名與類名相同 2、沒(méi)有返回類型,public class AccpTeacher5 private String name; / 教員姓名 / 構(gòu)造方法 public AccpTeacher5() name = “無(wú)名氏“; ,public class AccpTeacher5Test public static void main(String args) AccpTeacher5 teacher = new AccpTeacher5(); ,使用new關(guān)鍵字調(diào)用構(gòu)造方法,18,帶參數(shù)的構(gòu)造方法 2-1,通過(guò)帶參數(shù)的構(gòu)造方法,顯式地為實(shí)例變量賦予初始值,public class AccpTeacher6 private String name; / 教員姓名 private int age; / 年齡 private String education; / 學(xué)歷 private String position; / 職位 / 帶參數(shù)的構(gòu)造方法 public AccpTeacher6(String pName,int pAge,String pEducation,String pPosition) name = pName; age = pAge; / 可以增加對(duì)age等屬性的存取限制條件 education = pEducation; position = pPosition; public String introduction() return “大家好!我是“ + name + “,我今年“ + age + “歲,學(xué)歷“ + education + “,目前職位是“+position; ,19,帶參數(shù)的構(gòu)造方法 2-2,通過(guò)調(diào)用帶參數(shù)的構(gòu)造方法,簡(jiǎn)化對(duì)象初始化的代碼,public class AccpTeacher6Test public static void main(String args) AccpTeacher6 teacher = new AccpTeacher6(“李芳“, 23, “本科“, “咨詢師“); System.out.println(roduction(); ,創(chuàng)建對(duì)象時(shí),一并完成了對(duì)象成員的初始化工作,大家好!我是李芳,我今年23歲,學(xué)歷本科,目前職位是咨詢師,20,小結(jié) 3,編寫一個(gè)類Book2,代表教材: 具有屬性:名稱(title)、頁(yè)數(shù)(pageNum),其中頁(yè)數(shù)不能少于200頁(yè),否則輸出錯(cuò)誤信息,并賦予默認(rèn)值200 具有方法: detail,用來(lái)在控制臺(tái)輸出每本教材的名稱和頁(yè)數(shù)。 具有帶參數(shù)的構(gòu)造方法:用來(lái)完成對(duì)象的初始化工作,并在構(gòu)造方法中完成對(duì)頁(yè)數(shù)的最小值限制 編寫測(cè)試類Book2Test進(jìn)行測(cè)試:初始化一個(gè)Book2對(duì)象,并調(diào)用該Book2對(duì)象的detail方法,看看輸出是否正確,完整代碼實(shí)現(xiàn),21,生活中的方法重載,類,方法,方法參數(shù),方法實(shí)現(xiàn),司機(jī),轎車,巴士,火車,駕駛,啟動(dòng)、行駛、,等待乘客上車、啟動(dòng)、 行駛、到站停車、,正點(diǎn)發(fā)車、行駛、 到站停車、,如果用代碼實(shí)現(xiàn),我們需要三個(gè)方法,這些方法的方法名稱相同,參數(shù)類型不同,22,方法重載的代碼示例 1,方法重載并不陌生 java.io.PrintStream類的println方法能夠打印數(shù)據(jù)并換行,根據(jù)數(shù)據(jù)類型的不同,有多種實(shí)現(xiàn)方式,public class Test public static void main(String args) int i = 0; char c = z; String str = “hello“; System.out.println(i); System.out.println(c); System.out.println(str); ,PrintStream,println(int) println(char) println(String) ,方法名相同,參數(shù)類型不同,調(diào)用不同的println方法,方法重載,23,方法重載的代碼示例 2,java.lang.Math類的max()方法能夠從兩個(gè)數(shù)字中取出最大值,它有多種實(shí)現(xiàn)方式 運(yùn)行時(shí),Java虛擬機(jī)先判斷給定參數(shù)的類型,然后決定到底執(zhí)行哪個(gè)max()方法,public class Test public static void main(String args) Math.max(1,2); Math.max(1.0F,2.F); Math.max(1.0,2); ,方法重載,24,構(gòu)造方法重載 2-1,構(gòu)造方法重載是方法重載的典型示例,public class AccpTeacher7 private String name; / 教員姓名 private String school = “北京中心“; / 所在中心 public AccpTeacher7(String name) = name; /設(shè)定教員姓名 public AccpTeacher7(String name, String school) = name; /設(shè)定教員姓名 this.school = school; /設(shè)定教員的所在中心 public String introduction() return “大家好!我是“ + school + “的“ + name ; ,構(gòu)造方法重載,25,構(gòu)造方法重載 2-2,通過(guò)調(diào)用不同的構(gòu)造方法來(lái)表達(dá)對(duì)象的多種初始化行為 例如: 默認(rèn)情況下,教師來(lái)自北京中心,初始化時(shí),只需提供教員姓名 有時(shí),需要提供所在中心名稱及教員姓名,public class AccpTeacher7Test public static void main(String args) AccpTeacher7 teacher1 = new AccpTeacher7(“李芳“); System.out.println(roduction(); AccpTeacher7 teacher2 = new AccpTeacher7(“張欣“, “天津中心“); System.out.println(rod

溫馨提示

  • 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)論