輕工學(xué)院Java語言程序設(shè)計第四講.ppt_第1頁
輕工學(xué)院Java語言程序設(shè)計第四講.ppt_第2頁
輕工學(xué)院Java語言程序設(shè)計第四講.ppt_第3頁
輕工學(xué)院Java語言程序設(shè)計第四講.ppt_第4頁
輕工學(xué)院Java語言程序設(shè)計第四講.ppt_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java面向?qū)ο蟮奶卣?一),Java程序設(shè)計 第四講,世界是由什么組成的?,現(xiàn)實世界中的類和對象,對象的特征屬性,屬性對象具有的各種特征,每個對象的每個屬性都擁有特定值 例如:兩個人的體重,年齡不一樣,60kg,王小紅,屬性,35歲,對象的特征方法,方法對象執(zhí)行的操作,打單,收銀,方法,刷卡,封裝,對象同時具有屬性和方法兩項特性 對象的屬性和方法通常被封裝在一起,共同體現(xiàn)事物的特性,二者相輔相承,不能分割,誰看見過只有“完好的零件和顏色”而不能開動的汽車?,類:從對象抽取出類,顧客類 轎車類,類是模版,確定對象將會擁有的特征(屬性)和行為(方法),類和對象區(qū)別,類是抽象的概念,僅僅是模板,比

2、如說:“人” 對象是一個你能夠看得到、摸得著的具體實體,,小布什,普京,克林頓,奧巴馬,Java是面向?qū)ο蟮恼Z言,所有Java程序都以類class為組織單元 關(guān)鍵字class定義自定義的數(shù)據(jù)類型,public class HelloWorld public static void main(String args) System.out.println(Java); ,Java類模板,類將現(xiàn)實世界中的概念模擬到計算機(jī)程序中,public class 類名 /定義屬性部分 屬性1的類型 屬性1; 屬性2的類型 屬性2; 屬性n的類型 屬性n; /定義方法部分 方法1; 方法2; 方法m; ,JA

3、VA 中類的結(jié)構(gòu), 類修飾符 class 類名 extends 超類名 implements 接口名 成員變量定義;/表示類和對象的狀態(tài) 構(gòu)造方法定義;/構(gòu)造和初始化新對象 方法定義;/實現(xiàn)類和對象的行為 ,類聲明部分,類體部分,定義類,定義一個類的步驟 1、定義類名 2、編寫類的屬性 3、編寫類的方法,如何創(chuàng)建和使用對象,使用對象的步驟:使用new創(chuàng)建類的一個對象 School center = new School(); 使用對象:使用“.”進(jìn)行以下操作 給類的屬性賦值:對象名.屬性 調(diào)用類的方法:對象名.方法名() center.schoolName = “北京大學(xué)”; /給屬性賦值 c

4、enter.toString(); /調(diào)用類的方法,該方法中的操作將被執(zhí)行,類的例子:,class Employee String name; String designation; String department; public Employee(String eName, String eDesign, String eDept) name = eName; designation = eDesign; department = eDept; void showInfo( ) System.out.println(name+ is a + designation+ at +depart

5、ment+.); ,把雇員的共同數(shù)據(jù)及其操作方法抽象出來,封裝為Employee類。,類的例子:續(xù),public class ClassAndObject /程序的主類 public static void main(String args) Employee e1 = new Employee (“Robert ”,“Manager”,“Coffee shop” );/對象初始化 Employee e2 = new Employee (Tom ,Worker,Coffee shop ); /對象初始化 e1. showInfo(); e2. showInfo(); ,Robert is a

6、Manager at Coffee shop. Tom is a Worker at Coffee shop.,程序運行結(jié)果:,定義主類,并使用Employee類。,JAVA 中類的聲明,類修飾符: public:允許其他類(沒有限制)訪問本類; 默認(rèn):具有包訪問性 abstract:沒有實例的抽象概念類(如:shape類),只能創(chuàng)建其子類的實例。目的:使類的結(jié)構(gòu)清晰,實現(xiàn)多態(tài);,JAVA 中類的聲明(續(xù)),final:不能再被擴(kuò)展,不包含子類的類;易于安全性的實現(xiàn),或用于創(chuàng)建固定功能的類; 父類繼承聲明:extends 父類名 實現(xiàn)接口(interface):implements 接口,JA

7、VA 中類的聲明(續(xù)),例: public abstract class shape class rectangle extends shape final class round_rect extends rectangle ,?final可以與abstract一起使用嗎?,類的成員變量的聲明,聲明成員變量的語法 修飾符 數(shù)據(jù)類型 變量名; 修飾符 成員變量的訪問控制符 public:可被所有其他類訪問 protected:該類自身、子類、同一包中的其他類 缺?。嚎杀槐景械念愒L問 private:僅可被該類自身訪問和修改,不能被其他任何類(包括子類)訪問,類的封裝與數(shù)據(jù)隱藏,用privat

8、e將類內(nèi)部成員變量隱藏起來,只允許類自身的方法對其操作。 通過設(shè)置public/protected/default的方法權(quán)限,將這些類的方法作為對外的接口裸露出來,使外界只能通過這些方法來訪問類的數(shù)據(jù)。,成員變量的聲明(續(xù)),static :類成員變量(靜態(tài)變量),對所有的實例一致,引用時前綴可使用類名或?qū)ο竺?final:程序中不能修改其值,即常量,定義的同時應(yīng)對其進(jìn)行初始化 transient :非永久存儲變量 volatile :并發(fā)控制 引用:對象名.變量; 類名或?qū)ο竺?靜態(tài)變量,成員變量的聲明:例,class Circle private float radius; protect

9、ed float area; static float max_area100.0f; final float PI=3.14f; . ,成員變量的訪問,class A protected int weight ; protected int f( int a,int b ) / 方法體 假設(shè)B與A在同一個包中,則class B void g() A a=new A(); A.weight=100;/合法 A.f(3,4); /合法 Protected訪問性:該類自身、子類、同一包中的其他類,class A int weight ; int f( int a,int b ) / 方法體 假設(shè)B

10、與A在同一個包中,則 class B void g() A a=new A(); A.weight=100;/合法 A.f(3,4); /合法 缺?。嚎杀槐景械念愒L問,classTest private int money; Test() money=2000; private int getMoney() return money; public static void main(String args) Test te=new Test(); te.money=3000; /合法 int m=te.getMoney(); /合法 System.out.println(money=+m);

11、 private:僅可被該類自身訪問和修改,不能被其他任何類(包括子類)訪問,classFieldTest private int num=5;public int get()/正確訪問 Return num; class Test public static void main(String args) FieldTest ft=new FieldTest(); int t=ft.get();/可以訪問 / int s=ft.num;/不能訪問FieldTest中private num System.out.ptintln(“t=”+t) ; System.out.ptintln(s) ;

12、,方法的定義,方法的定義語法: 修飾符 返回類型 方法名(參數(shù)列表) throws 例外名 方法體; ,方法聲明部分,方法體部分,方法的定義,方法的作用:定義對類的成員變量(數(shù)據(jù))的操作 在Java中,方法定義的一般格式如下: () 是方法名,它必須使用合法的標(biāo)識符。 說明方法返回值的類型。如果方法不返回任何值,它應(yīng)該聲明為void。Java對待返回值的要求很嚴(yán)格,方法返回值必須與所說明的類型相匹配。,方法:語法結(jié)構(gòu),方法的聲明(續(xù)),訪問控制符: public、private、protected、缺省 public:可被所有其他類訪問 protected:該類自身、子類、同一包中的其他類 缺

13、省:可被本包中的類訪問 private:僅可被該類自身訪問和修改,不能被其他任何類(包括子類)訪問,static:靜態(tài)方法,又稱類方法 使用類名或?qū)ο竺鳛榍熬Y,建議使用類名作前綴 在static型的方法體中,只能訪問static變量和自身局部變量 優(yōu)點:不必對類實例化操作就能被其他類使用該方法??砷_發(fā)通用工具,如數(shù)學(xué)計算: Math.sqrt( ),abstract:只有方法名,沒有方法體,要在子類中通過重新定義(override)來實現(xiàn) final:不能被子類所重新定義(override) native:其他語言實現(xiàn) synchronized:并發(fā)線程控制,方法的聲明(續(xù)),返回類型: r

14、eturn 、 void(無返回值) 參數(shù)列表:參數(shù)類型可為類類型 throws: 通告本方法中會產(chǎn)生的例外(異常)類型,提醒調(diào)用者要對相應(yīng)的可能例外進(jìn)行處理。當(dāng)執(zhí)行此方法并發(fā)生了例外時,程序會轉(zhuǎn)入調(diào)用者編制的例外處理程序段。,方法體,在方法體中定義的變量稱為局部變量。 其生命周期:程序流執(zhí)行進(jìn)入方法體時創(chuàng)建,程序流退出方法時撤消。 局部變量使用之前必須初始化。 局部變量名若與類的成員變量名相同,則后者被隱藏(需用this顯露)。 在方法體中可以訪問本類所有的類變量,可以調(diào)用本類中定義的其它方法(其中,static方法只能直接調(diào)用本類的static方法和static變量)。,方法的定義(例),

15、例: class Circle private int radius; static float max_area =100.0f; public void set_radius(int my_radius) radius= my_ radius; public int get_radius( ) return radius; public static void setMA(float my_ MA) max_area= my_ MA; /在static型的方法體中,只能訪問static變量和本方法內(nèi)的局部變量,成員變量和方法有4種訪問級別: public, protected, defau

16、lt(package), private ; 類有兩種訪問級別:public 或default。 修飾符的作用范圍: 修飾符 同一個類 同一個包 子類 其它類 public Yes YesYes Yes protected Yes YesYes default Yes Yes private Yes,在談變量和方法訪問控制,程序包的訪問控制,private,default,protected,public,class Alpha private int iamprivate; private void privateMethod( ) System.out.println(privateMet

17、hod); class Beta void accessMethod() Alpha a = new Alpha( ); a.iamprivate = 10; a.privateMethod( ); ,訪問控制例子private,/ X, Beta類不能訪問Alpha類的private成員,class Alpha private int iamprivate; boolean isEqualTo(Alpha anotherAlpha) if (this.iamprivate = anotherAlpha.iamprivate) / anotherAlpha是本類的另一個對象,可以訪問本類的pr

18、ivate成員 return true; else return false; ,訪問控制例子private,注意:訪問控制應(yīng)用于class層次,而不是對象層次。,package Greek; class Alpha int iampackage; void packageMethod() System.out.println(packageMethod); package Greek; /同一個包中 class Beta void accessMethod() Alpha a = new Alpha(); a.iampackage = 10; a.packageMethod(); ,訪問控制

19、例子package(default),,同一個包,允許類本身、它的子類、以及同一個包中其余的類訪問這些成員。 package Greek; public class Alpha protected int iamprotected; protected void protectedMethod() System.out.println(protectedMethod); package Greek; /同一個包 class Gamma void accessMethod( ) Alpha a = new Alpha( ); a.iamprotected = 10; tectedMet

20、hod( ); ,訪問控制例子protected,/ legal,/ legal,package Latin; import Greek.*; class Delta extends Alpha void accessMethod(Alpha a, Delta d) a.iamprotected = 10; d.iamprotected = 10; tectedMethod(); tectedMethod(); ,訪問控制例子protected, 通過子類對象訪問,不在同一包中,無法直接訪問,位于Greek包中,位于Latin包中,方法的參數(shù),方法的參數(shù)要“有名有型”,參數(shù)

21、的作用域在本方法中,在方法體中可以象方法內(nèi)的局部變量一樣使用。 方法調(diào)用中,基本類型參數(shù)是值傳遞 。方法是傳值的,方法調(diào)用不會改變實參的值。,引用類型 值傳送,基本類型 值傳送,值傳送,3.14,3.14,A,B,0 x2F,0 x2F,A,B,方法定義:如 void method(int B) 形參 方法調(diào)用:如 my_instance.method(A) 實參,JAVA的參數(shù)傳遞總是傳“值”,但是傳值方式也分為兩種方式,它們是靠傳遞參數(shù)的類型區(qū)分的。 這兩種類型分別為JAVA的基礎(chǔ)類型和Object(對象)類型;基礎(chǔ)類型包括boolean,byte,short,char,int,long,

22、float,double,而Object就是對象類型,如數(shù)組,類對象。,在參數(shù)為基礎(chǔ)類型時,見代碼: public class A public static void main(String arg) int a=3; method1(a); System.out.println(a); public static void method1(int a) a=4; 此時結(jié)果的輸出將是1,而且只要你的值在Main函數(shù)中沒變,a的值不管怎么傳都不會變; 這是因為a是傳值,而這個值是a的一個拷貝,a的值在傳遞后的改變只是改變了a的拷貝的內(nèi)容,并沒有改變真正的a的值;,public class A

23、public static void main(String args) int a=new int1; a0=3; method1(a); System.out.println(a0); public static void method1(int a) a0-; public class A public static void main(String args) int a=new int1; a0=3; method1(a); System.out.println(a0); public static void method1(int a) a=new int0; a0=4; ,結(jié)果分

24、析,左邊的結(jié)果將是2,右邊的結(jié)果將是3(未變) 原因是:在傳遞的參數(shù)為對象時,這個傳遞的“值”中放的內(nèi)容實際上是對象所在的地址,左邊的情況是指針定位到對象的地址后,在上面把內(nèi)容給改了,所以數(shù)組的值后會改變 右邊的情況為給對象新分配了一個指針到新的地址上面去,所以所有的操作都在新的地址上面,并不會影響原來的值。,各變量的作用域,例:銀行業(yè)務(wù)的面向?qū)ο笤O(shè)計,要求:處理帳戶存取款、查詢帳戶和開戶日期等 面向?qū)ο蟮姆治觯∣OA) 對象模型抽象:銀行帳戶 對象模型分析: 余額、存、取、查 面向?qū)ο蟮脑O(shè)計(OOD) 對象模型的實現(xiàn):類及其成員定義 BankAccount類 balance, interes

25、t_rate等成員 getBalance(), deposit(), etc,例:銀行業(yè)務(wù),銀行帳戶類BankAccount,主類UseAccount,UseAccount.java,class BankAccount /銀行賬戶類 private float balance; /默認(rèn)初值為0 private float interest_rate; private int day,month,year; public float get_balance( )return balance;/查詢余額 public void deposit (float money) balance+=money ;/存錢方法 public class UseAccount

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論