面向?qū)ο蟮腏ava實現(xiàn)-封裝_第1頁
面向?qū)ο蟮腏ava實現(xiàn)-封裝_第2頁
面向?qū)ο蟮腏ava實現(xiàn)-封裝_第3頁
面向?qū)ο蟮腏ava實現(xiàn)-封裝_第4頁
面向?qū)ο蟮腏ava實現(xiàn)-封裝_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、面向?qū)ο蟮腏ava實現(xiàn)-封裝第十講2課程地位PrevHTMLSQL BaseLogic JavaC#/WinFormsSTBProject1:ADO.Net+WinForms C/SADO.Net/Three TierJavaScriptSQL AdvanceJava OOPProject2: B/S.Net/OOPJSPAjax/Web ServiceJSP/Servlet/JavaBean/Web ServiceStruts/Hibernate/Spring/AjaxASP.NetNTCProject3: .Net/Java HR/CRM/OA/B2C B/S行業(yè)手冊行業(yè)手冊3就業(yè)技能結(jié)構

2、圖4課程目標n學完本門課程后,你能夠q熟練使用OO思想編寫Java程序q深刻理解并運用繼承和接口q深刻理解并運用異常處理程序錯誤5相關課程回顧 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ū)別與聯(lián)系請舉例說明類與對象的區(qū)別與聯(lián)系超出了變量超出了變量i的的訪問范圍訪問范圍請指出下列請指出下列Java代碼中存在的錯誤,并改正。代碼中存在的錯誤,并改正。6預習檢查舉例說明什么是方

3、法重載?Java中的構造方法與實例方法,有什么區(qū)別?7本章任務n輸出教員的自我介紹:q對屬性進行封裝q用構造方法實現(xiàn)對象成員的初始化q對構造方法進行重載 8n理解封裝的概念n掌握private關鍵字n掌握構造方法n掌握方法重載本章目標9為什么需要封裝 2-1n編寫一個類,代表某個教員,要求:q具有屬性:姓名、年齡q具有行為:自我介紹q教員的最小年齡要求:22歲public class Teacher1public String name; / 教員姓名教員姓名public int age; /年齡年齡/* * 返回自我介紹的內(nèi)容返回自我介紹的內(nèi)容 */public String introdu

4、ction() return 大家好!我是大家好!我是 + name + ,我今年我今年+ age+歲歲;10為什么需要封裝 2-2n編寫一個測試類,要求:q實例化一個教員對象,并對其初始化q在控制臺輸出該教員的自我介紹public class Teacher1Test public static void main(String args) AccpTeacher1 teacher = new AccpTeacher1(); = 李芳李芳;teacher.age =10;System.out.println(roduction(); 要滿足教員的

5、最小年齡要求,可以通過對屬性的封裝來實現(xiàn)要滿足教員的最小年齡要求,可以通過對屬性的封裝來實現(xiàn)大家好!我是李芳,我今年大家好!我是李芳,我今年1010歲歲11什么是封裝public class Teacher2 private String name; / 教員姓名教員姓名/ 返回教員姓名返回教員姓名public String getName() return name;/ 設定教員姓名設定教員姓名public void setName(String name) = name;封裝,就是隱藏實現(xiàn)細節(jié)將屬性私有化,提供公有方法訪問私有屬性通過這些公有方法訪問私有屬性 Teach

6、er2 teacher = new Teacher2();teacher.setName (李芳李芳);String tName = teacher.getName();通過通過setter、getter方法方法訪問訪問name屬性屬性this代表當前類的實例代表當前類的實例12如何實現(xiàn)封裝2-1n封裝的實現(xiàn):1、修改屬性的可見性來限制對屬性的訪問2、為每個屬性創(chuàng)建一對賦值(setter)方法和取值(getter) 方法,用于對這些屬性的訪問3、在setter和getter方法中,加入對屬性的存取限制public class Teacher3 private String name; / 教員

7、姓名教員姓名private int age; /年齡年齡public int getAge() return age;public void setAge(int age) if (age22) System.out.println(錯誤!最小年齡應為錯誤!最小年齡應為22歲!歲!);this.age = 22; /如果不符合年齡要求,則賦予默認值如果不符合年齡要求,則賦予默認值 else this.age = age; /此處省略對此處省略對name屬性的屬性的setter、getter方法方法12313如何實現(xiàn)封裝2-2public class Teacher3Test public st

8、atic void main(String args) Teacher3 teacher = new Teacher3();teacher.setName (李芳李芳);teacher.setAge(10);System.out.println(roduction();使用封裝,增加了數(shù)據(jù)訪問限制,增強了程序的可維護性使用封裝,增加了數(shù)據(jù)訪問限制,增強了程序的可維護性 錯誤!最小年齡應為錯誤!最小年齡應為22歲!歲!大家好!我是李芳,我今年大家好!我是李芳,我今年22歲歲測試類通過調(diào)用setter方法,為對象的各個屬性賦值14小結(jié) 1n使用private關鍵字修飾某個成員

9、變量后,這個成員變量可以被同一包中的其它類訪問嗎?n在Java程序中,代碼封裝帶給我們的好處是什么?15小結(jié) 2請通過代碼封裝,實現(xiàn)如下需求:編寫一個類Book,代表教材:n具有屬性:名稱(具有屬性:名稱(title)、頁數(shù)()、頁數(shù)(pageNum),其中頁數(shù)不),其中頁數(shù)不能少于能少于200頁,否則輸出錯誤信息,并賦予默認值頁,否則輸出錯誤信息,并賦予默認值200n為各屬性設置賦值和取值方法為各屬性設置賦值和取值方法n具有方法具有方法:detail,用來在控制臺輸出每本教材的名稱和頁數(shù),用來在控制臺輸出每本教材的名稱和頁數(shù)編寫測試類BookTest進行測試:為Book對象的屬性賦予初始值,

10、并調(diào)用Book對象的detail方法,看看輸出是否正確16為什么需要構造方法 2-1n教員類Teacher4,要求:q具有屬性:姓名、年齡、學歷、職位q具有行為:自我介紹public class Teacher4 private String name; / 姓名姓名private int age; / 年齡年齡private String education; / 學歷學歷private String position; / 職位職位public String introduction() return 大家好!我是大家好!我是 + name + ,我今年,我今年 + age + 歲,學歷歲

11、,學歷 +education+,目前職位是,目前職位是+position;public String getName() return name;public void setName(String myName) name = myName;/ 以下是其他屬性的以下是其他屬性的setter、getter方法,此處省略方法,此處省略17為什么需要構造方法 2-2n編寫一個測試類,要求:q實例化一個教員對象,并對其初始化q在控制臺輸出該教員的自我介紹public class Teacher4Test public static void main(String args) Teacher4 te

12、acher = new Teacher4();teacher.setName(李芳李芳);teacher.setAge(23);teacher.setEducation(本科本科);System.out.println(roduction();要簡化對象初始化的代碼,可以通過構造方法來解決要簡化對象初始化的代碼,可以通過構造方法來解決 大家好!我是李芳大家好!我是李芳,我今年我今年23歲,學歷本科,目前職位是歲,學歷本科,目前職位是nullAccpTeacher4中有太多中有太多的屬性及對應的的屬性及對應的setter方方法,在初始化時,很容易法,在初始化時,很容易就忘記

13、了,有沒有可能簡就忘記了,有沒有可能簡化對象初始化的代碼?化對象初始化的代碼?18什么是構造方法n構造方法負責對象成員的初始化工作,為實例變量賦予合適的初始值n構造方法必須滿足以下語法規(guī)則:1、方法名與類名相同2、沒有返回類型public class Teacher5 private String name; / 教員姓名教員姓名/ 構造方法構造方法public Teacher5() name = 無名氏無名氏;public class Teacher5Test public static void main(String args) Teacher5 teacher = new Teache

14、r5();n使用new關鍵字調(diào)用構造方法19帶參數(shù)的構造方法 2-1n通過帶參數(shù)的構造方法,顯式地為實例變量賦予初始值 public class Teacher6 private String name; / 教員姓名教員姓名private int age; / 年齡年齡private String education; / 學歷學歷private String position; / 職位職位/ 帶參數(shù)的構造方法帶參數(shù)的構造方法public Teacher6(String pName,int pAge, String pEducation,String pPosition) name = p

15、Name;age = pAge; / 可以增加對可以增加對age等屬性的存取限制條件等屬性的存取限制條件education = pEducation;position = pPosition;public String introduction() return 大家好!我是大家好!我是 + name + ,我今年,我今年 + age + 歲,學歷歲,學歷 + education + ,目前職位是目前職位是+position;20帶參數(shù)的構造方法 2-2n通過調(diào)用帶參數(shù)的構造方法,簡化對象初始化的代碼public class Teacher6Test public static void ma

16、in(String args) Teacher6 teacher = new Teacher6(李芳李芳, 23, 本科本科, 咨詢師咨詢師);System.out.println(roduction();創(chuàng)建對象時,一并完成了對創(chuàng)建對象時,一并完成了對象成員的初始化工作象成員的初始化工作大家好!我是李芳大家好!我是李芳,我今年我今年23歲,學歷本科,目前職位是咨詢師歲,學歷本科,目前職位是咨詢師21小結(jié) 3編寫一個類Book2,代表教材:具有屬性:名稱(title)、頁數(shù)(pageNum),其中頁數(shù)不能少于200頁,否則輸出錯誤信息,并賦予默認值200具有方法:Sdet

17、ail,用來在控制臺輸出每本教材的名稱和頁數(shù)具有帶參數(shù)的構造方法:用來完成對象的初始化工作,并在構造方法中完成對頁數(shù)的最小值限制編寫測試類Book2Test進行測試:初始化一個Book2對象,并調(diào)用該Book2對象的detail方法,看看輸出是否正確22生活中的方法重載類類方法方法方法參數(shù)方法參數(shù)方法實現(xiàn)方法實現(xiàn)司機司機 轎車轎車 巴士巴士 火車火車 駕駛駕駛啟動、行駛、啟動、行駛、等待乘客上車、啟動、等待乘客上車、啟動、行駛、到站停車、行駛、到站停車、正點發(fā)車、行駛、正點發(fā)車、行駛、到站停車、到站停車、如果用代碼實現(xiàn),我們需要三個方法,這些方法的方法名稱如果用代碼實現(xiàn),我們需要三個方法,這些

18、方法的方法名稱相同,參數(shù)類型不同相同,參數(shù)類型不同 23方法重載的代碼示例 1n方法重載并不陌生njava.io.PrintStream類的println方法能夠打印數(shù)據(jù)并換行,根據(jù)數(shù)據(jù)類型的不同,有多種實現(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);PrintStreamprintln(int)println(

19、char)println(String)方法名相同,參數(shù)類型不同方法名相同,參數(shù)類型不同調(diào)用不同的調(diào)用不同的println方法方法方法重載方法重載24方法重載的代碼示例 2java.lang.Math類的max()方法能夠從兩個數(shù)字中取出最大值,它有多種實現(xiàn)方式運行時,Java虛擬機先判斷給定參數(shù)的類型,然后決定到底執(zhí)行哪個max()方法Mathmax(int a,int b)max(float a,float b)max(long a,long b)max(double a,double b)public class Test public static void main(String a

20、rgs) Math.max(1,2);Math.max(1.0F,2.0F);Math.max(1.0,2);方法重載方法重載25構造方法重載 2-1n構造方法重載是方法重載的典型示例public class AccpTeacher7 private String name; / 教員姓名教員姓名private String school = 北京中心北京中心; / 所在中心所在中心public AccpTeacher7(String name) = name; /設定教員姓名設定教員姓名public AccpTeacher7(String name, String sch

21、ool) = name; /設定教員姓名設定教員姓名this.school = school; /設定教員的所在中心設定教員的所在中心public String introduction() return 大家好!我是大家好!我是 + school + 的的 + name ;構造方法重載構造方法重載26構造方法重載 2-2n通過調(diào)用不同的構造方法來表達對象的多種初始化行為n例如:q默認情況下,教師來自北京中心,初始化時,只需提供教員姓名q有時,需要提供所在中心名稱及教員姓名public class AccpTeacher7Test public static void main(String args) AccpTeacher7 teacher1 = new AccpTeacher7(李芳李芳);System.out.println(roduction();AccpTeacher7 teacher2 = new A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論