版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、軟件開發(fā) 語言篇1面向?qū)ο蟮腏ava實(shí)現(xiàn)-封裝第十章2相關(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ū)別與聯(lián)系。超出了變量i的訪問范圍請指出下列Java代碼中存在的錯(cuò)誤,并改正。3回顧問題舉例說明什么是方法重載?Java中的構(gòu)造方法與實(shí)例方法,有什么區(qū)別?4本章任務(wù)升級Hello,輸出教員的自我介紹:對屬性進(jìn)行封裝用構(gòu)造方法實(shí)現(xiàn)對象成員的初始化對構(gòu)造方法進(jìn)行重載
2、5理解封裝的概念掌握private關(guān)鍵字掌握構(gòu)造方法掌握方法重載學(xué)習(xí)目標(biāo)6為什么需要封裝 2-1編寫一個(gè)類,代表教員,要求:具有屬性:姓名、年齡具有行為:自我介紹教員的最小年齡要求:22歲public class Teacher1public String name; / 教員姓名public int age; /年齡/* * 返回自我介紹的內(nèi)容 */public String introduction() return 大家好!我是 + name + ,我今年+ age+歲;7為什么需要封裝 2-2編寫一個(gè)測試類,要求:實(shí)例化一個(gè)教員對象,并對其初始化在控制臺輸出該教員的自我介紹public
3、 class Teacher1Test public static void main(String args) Teacher1 teacher = new Teacher1(); = 李芳;teacher.age =10;System.out.println(roduction(); 要滿足教員的最小年齡要求,可以通過對屬性的封裝來實(shí)現(xiàn)大家好!我是李芳,我今年10歲8什么是封裝public class Teacher2 private String name; / 教員姓名/ 返回教員姓名public String getName() retu
4、rn name;/ 設(shè)定教員姓名public void setName(String name) = name;封裝,就是隱藏實(shí)現(xiàn)細(xì)節(jié)將屬性私有化,提供公有方法訪問私有屬性通過這些公有方法訪問私有屬性 Teacher2 teacher = new Teacher2();teacher.setName (李芳);String tName = teacher.getName();通過setter、getter方法訪問name屬性this代表當(dāng)前類的實(shí)例9如何實(shí)現(xiàn)封裝2-1封裝的實(shí)現(xiàn):1、修改屬性的可見性來限制對屬性的訪問2、為每個(gè)屬性創(chuàng)建一對賦值(setter)方法和取值(ge
5、tter) 方法,用于對這些屬性的訪問3、在setter和getter方法中,加入對屬性的存取限制public class Teacher3 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; /此處省略對name屬性的setter、gett
6、er方法12310如何實(shí)現(xiàn)封裝2-2public class Teacher3Test public static void main(String args) Teacher3 teacher = new Teacher3();teacher.setName (李芳);teacher.setAge(10);System.out.println(roduction();使用封裝,增加了數(shù)據(jù)訪問限制,增強(qiáng)了程序的可維護(hù)性 錯(cuò)誤!最小年齡應(yīng)為22歲!大家好!我是李芳,我今年22歲測試類通過調(diào)用setter方法,為對象的各個(gè)屬性賦值11小結(jié) 1使用private關(guān)鍵字修飾某個(gè)成
7、員變量后,這個(gè)成員變量可以被同一包中的其它類訪問嗎?在Java程序中,代碼封裝帶給我們的好處是什么?12小結(jié) 2請通過代碼封裝,實(shí)現(xiàn)如下需求:編寫一個(gè)類Book,代表教材:具有屬性:名稱(title)、頁數(shù)(pageNum),其中頁數(shù)不能少于200頁,否則輸出錯(cuò)誤信息,并賦予默認(rèn)值200為各屬性設(shè)置賦值和取值方法具有方法:detail,用來在控制臺輸出每本教材的名稱和頁數(shù)編寫測試類BookTest進(jìn)行測試:為Book對象的屬性賦予初始值,并調(diào)用Book對象的detail方法,看看輸出是否正確13為什么需要構(gòu)造方法 2-1開發(fā)教員類AccpTeacher4,要求:具有屬性:姓名、年齡、學(xué)歷、職位
8、具有行為:自我介紹public class Teacher4 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 my
9、Name) name = myName;/ 以下是其他屬性的setter、getter方法,此處省略14為什么需要構(gòu)造方法 2-2編寫一個(gè)測試類,要求:實(shí)例化一個(gè)教員對象,并對其初始化在控制臺輸出該教員的自我介紹public class Teacher4Test public static void main(String args) Teacher4 teacher = new Teacher4();teacher.setName(李芳);teacher.setAge(23);teacher.setEducation(本科);System.out.println(rod
10、uction();要簡化對象初始化的代碼,可以通過構(gòu)造方法來解決 大家好!我是李芳,我今年23歲,學(xué)歷本科,目前職位是nullTeacher4中有太多的屬性及對應(yīng)的setter方法,在初始化時(shí),很容易就忘記了,有沒有可能簡化對象初始化的代碼?15什么是構(gòu)造方法構(gòu)造方法負(fù)責(zé)對象成員的初始化工作,為實(shí)例變量賦予合適的初始值構(gòu)造方法必須滿足以下語法規(guī)則:1、方法名與類名相同2、沒有返回類型public class Teacher5 private String name; / 教員姓名/ 構(gòu)造方法public Teacher5() name = 無名氏;public class Teacher5Te
11、st public static void main(String args) Teacher5 teacher = new Teacher5();使用new關(guān)鍵字調(diào)用構(gòu)造方法16帶參數(shù)的構(gòu)造方法 2-1通過帶參數(shù)的構(gòu)造方法,顯式地為實(shí)例變量賦予初始值 public class Teacher6 private String name; / 教員姓名private int age; / 年齡private String education; / 學(xué)歷private String position; / 職位/ 帶參數(shù)的構(gòu)造方法public Teacher6(String pName,int p
12、Age,String pEducation,String pPosition) name = pName;age = pAge; / 可以增加對age等屬性的存取限制條件education = pEducation;position = pPosition;public String introduction() return 大家好!我是 + name + ,我今年 + age + 歲,學(xué)歷 + education + ,目前職位是+position;17帶參數(shù)的構(gòu)造方法 2-2通過調(diào)用帶參數(shù)的構(gòu)造方法,簡化對象初始化的代碼public class Teacher6Test public s
13、tatic void main(String args) Teacher6 teacher = new Teacher6(李芳, 23, 本科, 咨詢師);System.out.println(roduction();創(chuàng)建對象時(shí),一并完成了對象成員的初始化工作大家好!我是李芳,我今年23歲,學(xué)歷本科,目前職位是咨詢師18小結(jié) 3編寫一個(gè)類Book2,代表教材:具有屬性:名稱(title)、頁數(shù)(pageNum),其中頁數(shù)不能少于200頁,否則輸出錯(cuò)誤信息,并賦予默認(rèn)值200具有方法: detail,用來在控制臺輸出每本教材的名稱和頁數(shù)。具有帶參數(shù)的構(gòu)造方法:用來完成對象的
14、初始化工作,并在構(gòu)造方法中完成對頁數(shù)的最小值限制編寫測試類Book2Test進(jìn)行測試:初始化一個(gè)Book2對象,并調(diào)用該Book2對象的detail方法,看看輸出是否正確19生活中的方法重載類方法方法參數(shù)方法實(shí)現(xiàn)司機(jī) 轎車 巴士 火車 駕駛啟動、行駛、等待乘客上車、啟動、行駛、到站停車、正點(diǎn)發(fā)車、行駛、到站停車、如果用代碼實(shí)現(xiàn),我們需要三個(gè)方法,這些方法的方法名稱相同,參數(shù)類型不同 20方法重載的代碼示例 1方法重載并不陌生java.io.PrintStream類的println方法能夠打印數(shù)據(jù)并換行,根據(jù)數(shù)據(jù)類型的不同,有多種實(shí)現(xiàn)方式public class Test public stat
15、ic 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(char)println(String)方法名相同,參數(shù)類型不同調(diào)用不同的println方法方法重載21方法重載的代碼示例 2java.lang.Math類的max()方法能夠從兩個(gè)數(shù)字中取出最大值,它有多種實(shí)現(xiàn)方式運(yùn)行時(shí),Java虛擬機(jī)先判斷給定參數(shù)的類型,然后決定到
16、底執(zhí)行哪個(gè)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 args) Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);方法重載22構(gòu)造方法重載 2-1構(gòu)造方法重載是方法重載的典型示例public class Teacher7 private String name; / 教員姓名private String school =
17、 北京中心; / 所在中心public Teacher7(String name) = name; /設(shè)定教員姓名public Teacher7(String name, String school) = name; /設(shè)定教員姓名this.school = school; /設(shè)定教員的所在中心public String introduction() return 大家好!我是 + school + 的 + name ;構(gòu)造方法重載23構(gòu)造方法重載 2-2通過調(diào)用不同的構(gòu)造方法來表達(dá)對象的多種初始化行為例如:默認(rèn)情況下,教師來自北京中心,初始化時(shí),只需提
18、供教員姓名有時(shí),需要提供所在中心名稱及教員姓名public class Teacher7Test public static void main(String args) Teacher7 teacher1 = new Teacher7(李芳);System.out.println(roduction();Teacher7 teacher2 = new Teacher7(張欣, 天津中心);System.out.println(roduction();大家好!我是北京中心的李芳大家好!我是天津中心的張欣24小結(jié) 4編寫一個(gè)類Book3,代表教材:具有屬性:名稱(title)、頁數(shù)(pageNum)、種類(type)具有方法:detail,用來在控制臺輸出每本教材的名稱、頁數(shù)、種類具有兩個(gè)帶參構(gòu)造方法:第一個(gè)構(gòu)造方法中,設(shè)置教材種類為“計(jì)算機(jī)”(固定),其余屬性的值由參數(shù)給定;第二個(gè)構(gòu)造方法中,所有屬性的值都由參數(shù)給定編寫測試類Book3Test進(jìn)行測試:分別以兩種方式完成對兩個(gè)Book3對象的初始化工作,并分別調(diào)用它們的detail方法,看看輸出是否正確25給定如下Java代碼,請指出代碼中的錯(cuò)誤,并
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版收養(yǎng)協(xié)議書范本匯編及修改建議3篇
- 二零二五年度個(gè)人公積金貸款購房合同范本3篇
- 二零二五版外籍教師在華任教及學(xué)術(shù)交流合同3篇
- 2025石材幕墻工程施工合同(施工進(jìn)度與質(zhì)量監(jiān)控)6篇
- 二零二五版停車場充電樁建設(shè)項(xiàng)目合作協(xié)議3篇
- 二零二五年度區(qū)塊鏈應(yīng)用與信息技術(shù)產(chǎn)品維護(hù)服務(wù)協(xié)議2篇
- 銀行服務(wù)質(zhì)量工作總結(jié)報(bào)告范文(大全5篇)
- 2025版二手車買賣及保險(xiǎn)合同范本3篇
- 二零二五年度商業(yè)綜合體全面清掃及消毒合同4篇
- 二零二五年度櫥柜制造與安裝工程承攬合同4篇
- 衛(wèi)生服務(wù)個(gè)人基本信息表
- 醫(yī)學(xué)脂質(zhì)的構(gòu)成功能及分析專題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實(shí)踐路徑
- 廣東省湛江市廉江市2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2024年湖北省知名中小學(xué)教聯(lián)體聯(lián)盟中考語文一模試卷
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 生物 含解析
- 交叉口同向可變車道動態(tài)控制與信號配時(shí)優(yōu)化研究
- 燃?xì)庑袠I(yè)有限空間作業(yè)安全管理制度
- 數(shù)列練習(xí)題(含答案)基礎(chǔ)知識點(diǎn)
- 人教版(2024新版)七年級上冊英語期中+期末學(xué)業(yè)質(zhì)量測試卷 2套(含答案)
- 安華農(nóng)業(yè)保險(xiǎn)股份有限公司北京市地方財(cái)政生豬價(jià)格指數(shù)保險(xiǎn)條款(風(fēng)險(xiǎn)敏感型)
評論
0/150
提交評論