版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來五年新形勢下凍干人凝血酶原復(fù)合物行業(yè)順勢崛起戰(zhàn)略制定與實施分析研究報告
- 未來五年農(nóng)業(yè)機(jī)械專用設(shè)備修理企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 未來五年生產(chǎn)性市場管理服務(wù)企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 未來五年雜糧企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 未來五年展覽、博覽會票務(wù)服務(wù)企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 未來五年漁業(yè)副產(chǎn)物(廢棄物)綜合利用企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 路燈工程施工方案與技術(shù)措施
- 聚焦算理、貫通算法、靈活應(yīng)用-“小數(shù)加減法”運算能力進(jìn)階與易錯點突破教學(xué)設(shè)計(四年級數(shù)學(xué))
- 小學(xué)語文三年級上冊《廬山的云霧》教學(xué)設(shè)計
- 記一件學(xué)會的事:四年級下冊《習(xí)作:我學(xué)會了-》教學(xué)設(shè)計
- DB21T 3414-2021 遼寧省防汛物資儲備定額編制規(guī)程
- 2024年度中國LCOS行業(yè)研究報告:廣泛應(yīng)用于投影、AR/VR、車載HUD的微顯示技術(shù)
- 2024金屬材料彎曲試驗方法
- 代謝相關(guān)(非酒精性)脂肪性肝病防治指南(2024年版)解讀
- DB11-T 1253-2022 地埋管地源熱泵系統(tǒng)工程技術(shù)規(guī)范
- 2024-2029年滴漏式咖啡機(jī)行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃投資研究報告
- 《審計法》修訂解讀
- 江蘇省姜堰市勵才實驗學(xué)校2024屆七年級數(shù)學(xué)第一學(xué)期期末經(jīng)典試題含解析
- 我國歷史文化名城保護(hù)面臨的沖擊與對策
- 白油化學(xué)品安全技術(shù)說明書
- 馬鞍山市恒達(dá)輕質(zhì)墻體材料有限公司智能化生產(chǎn)線環(huán)保設(shè)施改造項目環(huán)境影響報告表
評論
0/150
提交評論