Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目四 類與對象_第1頁
Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目四 類與對象_第2頁
Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目四 類與對象_第3頁
Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目四 類與對象_第4頁
Java程序設(shè)計(jì)教程(第三版)課件 項(xiàng)目四 類與對象_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論