版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目四Teacher類與對象的使用
【項(xiàng)目描述】定義并測試一個(gè)Teacher類,包含的屬性有“教工號”、“姓名”、“性別”、“基本工資”和“獎(jiǎng)金”;包含方法:1)打印基本信息。2)計(jì)算“基本工資”和“獎(jiǎng)金”的和。要求將屬性封裝起來,并對外提供公共的setter和getter方法以訪問被封裝屬性?!救蝿?wù)分解】
要實(shí)現(xiàn)本項(xiàng)目功能,我們可以分為以下三個(gè)任務(wù)來完成:1.Teacher類的創(chuàng)建。2.調(diào)用構(gòu)造方法創(chuàng)建Teacher類對象。
3.使用setter和getter方法訪問被封裝屬性。【任務(wù)描述】
任務(wù)4-1:創(chuàng)建一個(gè)Teacher類,包含的屬性有“教工號”、“姓名”、“性別”、“基本工資”和“獎(jiǎng)金”;包含方法:1)打印基本信息。2)計(jì)算“基本工資”和“獎(jiǎng)金”的和。[跳至解題思路]任務(wù)一Teacher類的創(chuàng)建
[必備知識】
1.面向?qū)ο笈c面向過程的區(qū)別
面向過程程序設(shè)計(jì)是,基于功能分解的結(jié)構(gòu)化程序開發(fā)過程,其對用戶需求變化的適用性差。而面向?qū)ο蠹夹g(shù),是將客觀世界的一個(gè)事物看作一個(gè)對象。每個(gè)對象都有自己的屬性和行為。面向?qū)ο蟮娜筇卣魇欠庋b、繼承和多態(tài)。采用面向?qū)ο蠹夹g(shù)即使用戶需求發(fā)生改化,也可以很好地適應(yīng)用戶需求的變化。2.類與對象的關(guān)系
類與對象是面向?qū)ο?。類是對某一類事物的描述,是抽象的,概念上的定義。對象即個(gè)體,也稱為實(shí)例。類是對象的模板,對象是按照模板產(chǎn)生出來的實(shí)例。
3.類的定義格式
類是由成員變量和成員方法組成的。成員變量是描述類的特征,也稱為屬性;成員方法則是描述類的行為。類是用class關(guān)鍵字去定義的。
類的定義格式如下:
[格式4-1類的定義]
class類名稱{
數(shù)據(jù)類型成員變量1;//聲明成員變量1
數(shù)據(jù)類型成員變量2;//聲明成員變量2
……
public返回類型方法名(參數(shù)列表){//聲明成員方法
語句1;
語句2;
……
[return表達(dá)式]
}
}
說明:
(1)類名要遵循標(biāo)志符的命名規(guī)則,并且每個(gè)單詞首字母要大寫。
(2)在一個(gè)類中可包含多個(gè)成員屬性和成員方法。
(3)類是不能直接使用的,需要產(chǎn)生對象。成員變量:也稱成員屬性,是在類以內(nèi)方法以外定義的變量。局部變量:是在類的方法中定義的變量或方法中的參數(shù)。4.成員變量和局部變量的區(qū)別:
兩者的主要區(qū)別在于作用域范圍不同,成員變量的作用域范圍是整個(gè)類。局部變量作用域范圍是定義它的方法內(nèi)部。示例1:局部變量的作用域范圍。
publicclassExample4_1{
intsum;
publicvoidmethod1(intx,inty){ intresult=x+y; sum=result; }publicvoidmethod2(){ intc; c=x;//此行代碼出錯(cuò),不能使用method1方法的局部變量x sum=10; } }
示例分析:在本例中,sum是成員變量,它的作用域范圍是整個(gè)類,所以在method1()和method2()兩個(gè)方法中均可以使用。x、y和result是method1()方法的局部變量,在method2()中使用了x是非法的。示例2:成員變量和局部變量同名的情況。publicclassExample4_2{
staticinta=3;
publicstaticvoidmain(Stringargs[]){
inta=200;
System.out.println("a="+a);
}}示例分析:本例的輸出結(jié)果是a=200。原因是當(dāng)成員變量和局部變量同名時(shí),在局部變量的作用范圍成員變量隱藏。重溫題目要求【解題思路】
1.用class關(guān)鍵字定義一個(gè)Teacher類。2.往Teacher類中添加屬性:教工號teacherId、姓名name、性別sex、基本工資salary和獎(jiǎng)金wage。3.往Teacher類中添加print()和total()方法,分別用于輸出基本信息和求工資總和?!救蝿?wù)透析】
classTeacher{
StringteacherId;
//聲明教工id屬性
Stringname;
//聲明姓名屬性
Stringsex;
//聲明性別屬性
floatsalary;
//聲明基本工資屬性
floatwage;
//聲明獎(jiǎng)金屬性
publicvoidprint(){//定義print方法用于輸出教工的基本信息
System.out.println("教工號:"+teacherId+",姓名:"+name+",性別:"+sex);
}
publicfloattotal(){
returnsalary+wage;
}
}
方法print()前的修飾符void表示該方法不返回任何值,而total()方法前的float表示該方法調(diào)用完畢會返回一個(gè)單精度的浮點(diǎn)數(shù)?!菊n堂提問】★面向?qū)ο蟮娜筇卣魇鞘裁??★類與對象的關(guān)系?★類的組成?【現(xiàn)場演練】定義一個(gè)Student類,包含的屬性有“學(xué)號”、“姓名”和“C語言”、“計(jì)算機(jī)應(yīng)用基礎(chǔ)”和“英語”三門課程成績。并聲明一個(gè)求三門課程平均分的方法。重溫題目要求任務(wù)二調(diào)用構(gòu)造方法創(chuàng)建Teacher類對象
【任務(wù)描述】任務(wù)4-2:聲明一個(gè)測試類ClassDemo1Test,在測試類中創(chuàng)建一個(gè)Teacher類的對象,對各成員屬性進(jìn)行初始化,并調(diào)用成員方法輸出該對象的信息。跳至解題思路【必備知識】在任務(wù)1中已經(jīng)創(chuàng)建好一個(gè)Teacher類,要想使用一個(gè)類,必須要?jiǎng)?chuàng)建該類的對象。1.對象的創(chuàng)建格式[格式4-2對象的創(chuàng)建]格式一:類名對象名=null;//聲明對象對象名=new類名();
//實(shí)例化對象格式二:類名對象名=new類名();//聲明對象的同時(shí)實(shí)例化對象2、構(gòu)造方法
構(gòu)造方法就是和類名相同的方法。構(gòu)造方法是用來完成在創(chuàng)建對象時(shí),對對象中的變量和方法等進(jìn)行初始化操作的。(1)構(gòu)造方法名和類名相同。(2)構(gòu)造方法是沒有返回值的,但也不能用void聲明。(3)構(gòu)造方法的主要作用是對對象初始化。(4)構(gòu)造方法不能顯式地直接調(diào)用。(new)(5)一個(gè)類中可以定義多個(gè)構(gòu)造方法,也就是構(gòu)造方法是支持重載,但各構(gòu)造方法的參數(shù)表不相同。
示例3:創(chuàng)建對象。
classPerson{
Stringname;
floathight;
public
voidsmile(){
System.out.println(“姓名:”+name+“身高”+hight);
}
}
public
classExample4_3{
public
static
voidmain(Stringargs[]){
Personp1=newPerson();//創(chuàng)建并實(shí)例化對象p1
Personp2=newPerson();//創(chuàng)建并實(shí)例化對象p2
}
}
示例分析:本例在main方法中實(shí)例化了兩個(gè)Person對象,對象名稱為p1、p2。其中,對象名稱保存在棧內(nèi)存中,對象的具體內(nèi)容保存在堆內(nèi)容中。new關(guān)鍵字的作用是為對象開辟堆內(nèi)存空間。內(nèi)存分配如圖4.1所示創(chuàng)建類的對象后,就可以使用對象訪問屬性和方法。(1)訪問成員變量格式:
對象名.成員變量名3、對象的使用
(2)訪問成員變量格式:
對象名.成員方法名([參數(shù)])和數(shù)組一樣,類屬于引用數(shù)據(jù)類型。引用數(shù)據(jù)類型是指多個(gè)棧內(nèi)存可以同時(shí)指向同一段堆內(nèi)存空間。4、對象的引用傳遞示例4:對象的引用傳遞。【解題思路】 1.聲明一個(gè)public的測試類ClassDemo1Test。2.實(shí)例化一個(gè)Teacher類對象,并對其成員變量進(jìn)行初始化。3.調(diào)用對象的成員方法,輸出該教師對象的信息?!救蝿?wù)透析】
publicclassClassDemo4_2Test{ publicstaticvoidmain(Stringargs[]){ doublepay; Teachert=newTeacher(); t.teacherId="112001"; ="梁宇軒"; t.sex="男"; t.salary=-2500f; t.wage=300f; t.print(); pay=t.total(); System.out.println("總工資為:"+pay); } }
程序運(yùn)行結(jié)果顯示總工資為負(fù)數(shù),這顯然是不合法的數(shù)據(jù)。該如何避免這種錯(cuò)誤的發(fā)生呢?因?yàn)樵谌蝿?wù)4-1中,Teacher類的屬性沒有封裝,可以被其他類直接訪問。正確的做法是將要保護(hù)的屬性私有化,即用關(guān)鍵字private修飾,增加一些方法來訪問這些屬性。詳見任務(wù)4-3。任務(wù)三使用setter和getter方法訪問被封裝屬性
【任務(wù)描述】
任務(wù)4-3:對Teacher類的所有屬性進(jìn)行封裝,并為每個(gè)屬性創(chuàng)建一對getter和setter方法。通過setter方法對屬性設(shè)置值及getter方法獲取屬性值。[跳至解題思路]【必備知識】1.封裝的概念封裝包含兩層含義:第一層是將類的屬性和行為封裝在一個(gè)類中,給外界提供訪問屬性的接口。第二層含義是將類的屬性的訪問權(quán)限用關(guān)鍵字private去修飾。用private修飾的屬性只能在本類中訪問,類以外是無法直接訪問的,但可以通過類的公有方法去訪問。2.封裝的目的封裝的目的就是保護(hù)內(nèi)容,保證某些屬性或方法不被外部看見。3.setter和getter方法被封裝的屬性是不能由對象直接訪問的,只能通過setter和getter方法去訪問。setter方法是用于設(shè)置被封裝屬性的值;getter方法是用于獲取被封裝屬性的值。【解題思路】1.將Teacher類所有屬性的訪問權(quán)限修改為private。2.對每一個(gè)屬性創(chuàng)建一對setter和getter方法,通過setter方法對屬性設(shè)置值及getter方法獲取屬性值。3.要避免用戶設(shè)置不合法的屬性值,我們只需在setter方法中添加對屬性值進(jìn)行檢查的功能即可。重溫題目要求【任務(wù)透析】packagecom;classTeacher{ privateStringteacherId; privateStringname; privateStringsex; privatefloatsalary; privatefloatwage; publicStringgetTeacherId(){ returnteacherId; } publicvoidsetTeacherId(StringteacherId){ this.teacherId=teacherId; } publicStringgetName(){ returnname; }publicvoidsetName(Stringname){ =name; } publicStringgetSex(){ returnsex; } publicvoidsetSex(Stringsex){ this.sex=sex; } publicfloatgetSalary(){ returnsalary; } publicvoidsetSalary(floatsalary){ if(salary>0) this.salary=salary; } publicfloatgetWage(
溫馨提示
- 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è)技術(shù)學(xué)院《中學(xué)語文課程教學(xué)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 數(shù)獨(dú)答案生成器-20220303010135
- 數(shù)字教學(xué)實(shí)踐報(bào)告
- 經(jīng)典搞笑語錄集錦
- 部編版2024-2025學(xué)年六年級上語文寒假作業(yè)(七)(有答案)
- 浙江省杭州市拱墅區(qū)源清中學(xué)2024-2025學(xué)年高一(上)期中物理試卷(含答案)
- 2025屆吉林省前郭爾羅斯蒙古族自治縣第五高級中學(xué)高三上學(xué)期第五次考試歷史試題(綱要上下 選擇性必修三冊)(含答案解析)
- 《色達(dá)佛學(xué)院全景》課件
- 伊春職業(yè)學(xué)院《臺詞與表演》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度城市綜合體土石方運(yùn)輸及配套設(shè)施合同3篇
- ppr管件注塑工藝
- 職業(yè)技能鑒定要素細(xì)目表和卷庫編寫要求
- 公司設(shè)備轉(zhuǎn)讓合同協(xié)議書
- 2023年全國統(tǒng)一建筑工程預(yù)算工程量計(jì)算規(guī)則完整版
- 教科版四年級科學(xué)下冊第三單元巖石與土壤4.制作巖石和礦物標(biāo)本(教學(xué)設(shè)計(jì))教案
- 大學(xué)《工程力學(xué)》期末考試試題庫含詳細(xì)答案
- 2022年湖北省武漢市中考數(shù)學(xué)試卷含解析
- TLFSA 003-2020 危害分析與關(guān)鍵控制點(diǎn)(HACCP)體系調(diào)味面制品生產(chǎn)企業(yè)要求
- LY/T 2244.3-2014自然保護(hù)區(qū)保護(hù)成效評估技術(shù)導(dǎo)則第3部分:景觀保護(hù)
- 紀(jì)律教育月批評與自我批評五篇
- GB/T 26480-2011閥門的檢驗(yàn)和試驗(yàn)
評論
0/150
提交評論