版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
類與對象復習說明類與對象的區(qū)別?舉例說明什么是方法重載?Java中的構造方法與實例方法,有什么區(qū)別?思考:對屬性進行封裝用構造方法實現(xiàn)對象成員的初始化對構造方法進行重載
要點:理解封裝的概念掌握private關鍵字掌握構造方法掌握方法重載目標:編寫一個類,代表學生,要求:具有屬性:姓名、年齡具有行為:自我介紹學生的最小年齡要求18歲publicclassStudent1{publicStringname;//學生姓名publicintage;//年齡/***返回自我介紹的內容*/publicStringintroduction(){return"大家好!我是"+name+",我今年"+age+"歲";}}編寫一個測試類,要求:實例化一個學生對象,并對其初始化在控制臺輸出該學生的自我介紹publicclassStudent1Test{publicstaticvoidmain(String[]args){Student1s=newStudent1();="李芳";s.age=10;System.out.println(roduction());}}要滿足學生的最小年齡要求,可以通過對屬性的封裝來實現(xiàn)大家好!我是李芳,我今年10歲publicclassStudent2{privateStringname;//學生姓名//返回學生姓名publicStringgetName(){
returnname;}//設定學生姓名publicvoidsetName(Stringname){
=name;}}
封裝,就是隱藏實現(xiàn)細節(jié)將屬性私有化,提供公有方法訪問私有屬性通過這些公有方法訪問私有屬性Student2s=Student2();s.setName("李芳");StringsName=s.getName();通過setter、getter方法訪問name屬性this代表當前類的實例封裝的實現(xiàn):1、修改屬性的可見性來限制對屬性的訪問2、為每個屬性創(chuàng)建一對賦值(setter)方法和取值(getter)方法,用于對這些屬性的訪問3、在setter和getter方法中,加入對屬性的存取限制publicclassStudent3{privateStringname;//學生姓名privateintage;//年齡publicintgetAge(){ returnage;}publicvoidsetAge(intage){if(age<18){System.out.println("錯誤!最小年齡應為18歲!");this.age=18;//如果不符合年齡要求,則賦予默認值}else{this.age=18;}}//此處省略對name屬性的setter、getter方法}123publicclassStudent3Test{publicstaticvoidmain(String[]args){ Student3s=newStudent3(); s.setName("李芳"); s.setAge(10); System.out.println(roduction());}}使用封裝,增加了數(shù)據(jù)訪問限制,增強了程序的可維護性錯誤!最小年齡應為18歲!大家好!我是李芳,我今年18歲測試類通過調用setter方法,為對象的各個屬性賦值小結1使用private關鍵字修飾某個成員變量后,這個成員變量可以被同一包中的其它類訪問嗎?在Java程序中,代碼封裝帶給我們的好處是什么?小結2請通過代碼封裝,實現(xiàn)如下需求:編寫一個類Book,代表教材:具有屬性:名稱(title)、頁數(shù)(pageNum),其中頁數(shù)不能少于200頁,否則輸出錯誤信息,并賦予默認值200為各屬性設置賦值和取值方法具有方法:detail,用來在控制臺輸出每本教材的名稱和頁數(shù)編寫測試類BookTest進行測試:為Book對象的屬性賦予初始值,并調用Book對象的detail方法,看看輸出是否正確classBook{ privateStringtitle; privateintpageNum; publicintgetPageNum(){ returnpageNum; } publicvoidsetPageNum(intpageNum){ if(pageNum<200){ System.out.println("頁數(shù)不能少于200頁!"); this.pageNum=200; }else this.pageNum=pageNum; } publicStringgetTitle(){ returntitle; } publicvoidsetTitle(Stringtitle){ this.title=title; } publicvoiddetail(){ System.out.println("書名:"+title+",頁數(shù):"+pageNum); }
}publicclassBookTest{ publicstaticvoidmain(Stringargs[]){ Bookb=newBook(); b.setTitle("Java快速入門"); b.setPageNum(109); b.detail(); }}開發(fā)學生類Student4,要求:具有屬性:姓名、年齡、學歷、職位具有行為:自我介紹publicclassStudent4{privateStringname;//姓名privateintage;//年齡privateStringaddress;//家庭住址privateStringtelephone;//聯(lián)系方式publicStringintroduction(){return“大家好!我是”+name+“,我今年”+age+“歲,家庭住址“+address+”,聯(lián)系方式是"+telephone;}publicStringgetName(){ returnname;}publicvoidsetName(StringmyName){ name=myName;}//以下是其他屬性的setter、getter方法,此處省略}編寫一個測試類,要求:實例化一個學生對象,并對其初始化在控制臺輸出該教員的自我介紹publicclassStudent4Test{publicstaticvoidmain(String[]args){Student4s=newStudent4();s.setName("李芳");s.setAge(23);s.setAddress(“大興…");System.out.println(roduction());}}要簡化對象初始化的代碼,可以通過構造方法來解決大家好!我是李芳,我今年23歲……….Student4中有太多的屬性及對應的setter方法,在初始化時,很容易就忘記了,有沒有可能簡化對象初始化的代碼?構造方法負責對象成員的初始化工作,為實例變量賦予合適的初始值構造方法必須滿足以下語法規(guī)則:1、方法名與類名相同2、沒有返回類型publicclassStudent5{privateStringname;//學生姓名//構造方法publicStudent5(){name="無名氏";}}publicStudent5Test{publicstaticvoidmain(String[]args){ Student5teacher=newStudent5();}}使用new關鍵字調用構造方法通過帶參數(shù)的構造方法,顯式地為實例變量賦予初始值publicclassStudent6{privateStringname;//學生姓名privateintage;//年齡privateStringaddress;//家庭住址privateStringtelephone;//聯(lián)系方式//帶參數(shù)的構造方法publicStudent6(StringpName,intpAge,StringpAdddress,StringpTelephone){name=pName;age=pAge;//可以增加對age等屬性的存取限制條件education=pAddress;position=pTelephone;}publicStringintroduction(){return“大家好!我是”+name+“,我今年”+age+“歲,家庭住址是”
+address+“,聯(lián)系方式"+telephone;}}通過調用帶參數(shù)的構造方法,簡化對象初始化的代碼publicclassStudent6Test{publicstaticvoidmain(String[]args){Student6s=newStudent6("李芳",23,“大興”,);System.out.println(roduction());}}創(chuàng)建對象時,一并完成了對象成員的初始化工作大家好!我是李芳,我今年23歲,……………小結3編寫一個類Book2,代表教材:具有屬性:名稱(title)、頁數(shù)(pageNum),其中頁數(shù)不能少于200頁,否則輸出錯誤信息,并賦予默認值200具有方法:detail,用來在控制臺輸出每本教材的名稱和頁數(shù)。具有帶參數(shù)的構造方法:用來完成對象的初始化工作,并在構造方法中完成對頁數(shù)的最小值限制編寫測試類Book2Test進行測試:初始化一個Book2對象,并調用該Book2對象的detail方法,看看輸出是否正確classBook2{ privateStringtitle; privateintpageNum; publicBook2(Stringtitle,intpageNum){ this.title=title; if(pageNum<200){ System.out.println("頁數(shù)不能少于200頁!"); this.pageNum=200; }else this.pageNum=pageNum; } publicvoiddetail(){ System.out.println(“書名:”+title+“,頁數(shù):"+pageNum); }
}publicclassBook2Test{ publicstaticvoidmain(String[]args){ Book2b=newBook2("Java入門",107); b.detail();
}}生活中的方法重載類方法方法參數(shù)方法實現(xiàn)司機轎車巴士火車駕駛啟動、行駛、……等待乘客上車、啟動、行駛、到站停車、……正點發(fā)車、行駛、到站停車、……如果用代碼實現(xiàn),我們需要三個方法,這些方法的方法名稱相同,參數(shù)類型不同方法重載并不陌生java.io.PrintStream類的println方法能夠打印數(shù)據(jù)并換行,根據(jù)數(shù)據(jù)類型的不同,有多種實現(xiàn)方式publicclassTest{publicstaticvoidmain(String[]args){inti=0;charc='z';Stringstr="hello";System.out.println(i);System.out.println(c);System.out.println(str);}}PrintStreamprintln(int)println(char)println(String)……方法名相同,參數(shù)類型不同調用不同的println方法方法重載java.lang.Math類的max()方法能夠從兩個數(shù)字中取出最大值,它有多種實現(xiàn)方式運行時,Java虛擬機先判斷給定參數(shù)的類型,然后決定到底執(zhí)行哪個max()方法Mathmax(inta,intb)max(floata,floatb)max(longa,longb)max(doublea,doubleb)publicclassTest{publicstaticvoidmain(String[]args){Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);}}方法重載構造方法重載是方法重載的典型示例publicclassStudent7{privateStringname;//學生姓名privateStringschool=“北京聯(lián)合大學";publicStudent7(Stringname){ =name;//設定學生姓名}publicStudent7(Stringname,Stringschool){=name;//設定學生姓名this.school=school;//設定學生所在學校}publicStringintroduction(){ return"大家好!我是"+school+"的"+name;}}構造方法重載通過調用不同的構造方法來表達對象的多種初始化行為例如:默認情況下,學生來自北京聯(lián)合大學,初始化時,只需提供學生姓名有時,需要提供所在學生來自學校及學生姓名publicclassStudent7Test{publicstaticvoidmain(String[]args){Student7s1=newStudent7("李芳");System.out.println(roduction());Student7s2=newStudent7("張欣",“北京工業(yè)大學");System.out.println(roduction());}}大家好!我是北京聯(lián)合大學的李芳大家好!我是北京工業(yè)大學的張欣小結4編寫一個類Book3,代表教材:具有屬性:名稱(title)、頁數(shù)(pageNum)、種類(type)具有方法:detail,用來在控制臺輸出每本教材的名稱、頁數(shù)、種類具有兩個帶參構造方法:第一個構造方法中,設置教材種類為“計算機”(固定),其余屬性的值由參數(shù)給定;第二個構造方法中,所有屬性的值都由參數(shù)給定編寫測試類Book3Test進行測試:分別以兩種方式完成對兩個Book3對象的初始化工作,并分別調用它們的detail方法,看看輸出是否正確classBook3{ privateStringtitle; privateintpageNum; privateStringtype; publicBook3(Stringtitle,intpageNum){ this.title=title; thi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/IEC TS 10866:2024 EN Information technology - Cloud computing and distributed platforms - Framework and concepts for organizational autonomy and digital sovereignty
- 二年級班主任期末工作總結激發(fā)學生學習興趣促進全面發(fā)展
- 室內設計行業(yè)助理工作總結
- 2024年標準協(xié)議管理制度全面指南版
- 2024年湖北省武漢市在建項目木工施工作業(yè)承包協(xié)議
- 2024年版汽車租賃協(xié)議樣式版
- 2024年土地整治項目土石方居間合同范本3篇
- 搬運小車課程設計
- 工程資料能代簽合同嗎
- 2024年醫(yī)療器械維修及售后服務合同3篇
- 高性能稀土鋁合金導體材料研究
- 電鍍廠安全常識培訓
- 倉儲管理練習題及答案
- 污水處理廠的工藝流程設計
- 危險品運輸車輛租賃合同
- 急性呼吸衰竭的急救(病案查房)
- 2025年日歷有農歷有周數(shù)周一開始(A4紙可編輯可直接打印)
- 2006年度銀行業(yè)金融機構信息科技風險評價審計要點
- 基于PLC的校園照明智能控制系統(tǒng)設計畢業(yè)設計論文
- 現(xiàn)澆梁鋼管柱+貝雷片支架驗收表
- 2022年中考物理真題選及參考答案-電學計算題
評論
0/150
提交評論