面向?qū)ο蟮乃枷敫攀鯻第1頁
面向?qū)ο蟮乃枷敫攀鯻第2頁
面向?qū)ο蟮乃枷敫攀鯻第3頁
面向?qū)ο蟮乃枷敫攀鯻第4頁
面向?qū)ο蟮乃枷敫攀鯻第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟮乃枷敫攀鲇捎贘ava語言是面向?qū)ο蟮某绦蛟O(shè)計語言,為編寫出充分利用Java特點的高效程序,必須首先建立按照面向?qū)ο蟮姆椒▉碚J(rèn)知世界的思維方式。

課程目標(biāo)第2頁,共119頁,2024年2月25日,星期天了解對象;了解類型;了解對象和類型之間的關(guān)系本章重點第3頁,共119頁,2024年2月25日,星期天面向過程 程序=算法+數(shù)據(jù) 以數(shù)據(jù)為基礎(chǔ),通過算法計算數(shù)據(jù)面向?qū)ο?程序=對象+消息 萬物皆為對象,對象通過消息相互作用面向過程與面向?qū)ο蟊容^第4頁,共119頁,2024年2月25日,星期天什么是面向?qū)ο蟛皇褂妹嫦驅(qū)ο竺枋鲆患虑嘟烦磁H?/p>

取出青椒500g,用刀切成細(xì)絲,過油取出牛肉300g,切丁,用醬油、酒、黑醋腌制30分鐘起油鍋、放入牛肉炒及青椒大火快炒1分半拿出淀粉、水調(diào)在一起,這個稱為

芡汁。將芡汁倒入鍋中攪拌,會產(chǎn)生黏稠現(xiàn)象這叫芶芡完成。使用面向?qū)ο竺枋鲆患虑嘟烦磁H?/p>

青椒

數(shù)量:500g

處理:用刀切成細(xì)絲,過油

牛肉

數(shù)量:300g

處理:切丁,用醬油、酒、黑醋腌制

芡汁

製作:淀粉調(diào)上適量的水

芶芡:將芡汁倒入鍋中

青椒處理好、牛肉處理好、芡汁製作好,

放入鍋中快炒1分半後用芡汁芶芡即可。第5頁,共119頁,2024年2月25日,星期天什么是面向?qū)ο笄嘟烦磁H?/p>

青椒

數(shù)量:500g

處理:用刀切成細(xì)絲過油

牛肉

數(shù)量:300g

處理:切丁,用醬油、酒、

黑醋腌制

芡汁

製作:淀粉調(diào)上適量的水

芶芡:將芡汁倒入鍋中

青椒處理好、牛肉處理好、芡汁製作好,放入鍋中快炒1分半後用芡汁芶芡即可。先定好參與這件事的物品有哪些(這些物品叫做“對象”)再定義這些物品所需的數(shù)量及行為(這些數(shù)量及行為叫做

“屬性”與“方法”)接下來就可用物品間的互動行為來描述整件事情是如何發(fā)生的。

(這部份的描述稱為“主程序”)第6頁,共119頁,2024年2月25日,星期天什么是對象?對象由什么組成?對象有什么特性?對象觀第7頁,共119頁,2024年2月25日,星期天對象

(object)我們可以把生活所在的真實世界(RealWorld)當(dāng)作是由許多大小不同的對象所組成的。對象可以是有生命的個體,比如一個人或一只鳥。第8頁,共119頁,2024年2月25日,星期天對象也可以是無生命的個體,比如一輛汽車或一臺計算機。對象也可以是一件抽象的概念,如天氣的變化或鼠標(biāo)所產(chǎn)生的事件。

第9頁,共119頁,2024年2月25日,星期天萬物皆對象現(xiàn)實是由實體組成的,所有實體皆為對象。對象是現(xiàn)實實體在軟件系統(tǒng)中的映射對象觀第10頁,共119頁,2024年2月25日,星期天對象的三要素對象的屬性(特征、狀態(tài)、組成)對象的行為(對象能完成的功能,用于改變狀態(tài)、發(fā)送消息)對象的標(biāo)識對象觀第11頁,共119頁,2024年2月25日,星期天生活中常見的對象:對象的名稱對象的屬性(狀態(tài))對象的方法(行為)汽車速度、油量、所處的位置…加速、剎車、換擋…倉庫結(jié)構(gòu)、容量、庫存…入庫、出庫、盤點…國家經(jīng)濟狀況、人口、地理位置…發(fā)展經(jīng)濟、戰(zhàn)爭、談判…發(fā)展經(jīng)濟、戰(zhàn)爭、談判…人五官、膚色、民族…運動、工作、學(xué)習(xí)…第12頁,共119頁,2024年2月25日,星期天類(class)在真實世界里,有許多同“種類”的對象。而這些同“種類”的對象可被歸類為一個“類”。例如我們可將世界上所有的汽車歸類為汽車類,所有的動物歸為動物類。

動物類汽車類第13頁,共119頁,2024年2月25日,星期天類描述了一組有相同特性(屬性)和相同行為(方法)的對象。類是現(xiàn)實世界中實體的抽象集合,是封裝了數(shù)據(jù)和操作的復(fù)雜的抽象數(shù)據(jù)類型。什么是類第14頁,共119頁,2024年2月25日,星期天類和對象汽車類有些共同的狀態(tài)(汽缸排氣量,排檔數(shù),顏色,輪胎數(shù)……)和行為(換檔,開燈,開冷氣……),但每一臺汽車個別的狀態(tài)及方法可不同于且獨立于其他汽車

。你的汽車只是這世界中許多汽車中的一個。我們就稱你的汽車是汽車類中的一個對象,也叫一個實例汽車類

class)實例

instance)NEW你的車第15頁,共119頁,2024年2月25日,星期天

軟件開發(fā)過程:具體—抽象—具體對象:劉麗靜態(tài)特征:劉麗女講師動態(tài)特征:授課評職稱類:教師

屬性:姓名性別職稱服務(wù):授課評職稱抽象實例化第16頁,共119頁,2024年2月25日,星期天類和對象類是具有共同屬性和行為的對象的抽象。對象是具體的,類型是抽象的創(chuàng)建的是類型,使用的是對象類對象抽象實例化屬性或狀態(tài)操作或行為數(shù)據(jù)或變量方法第17頁,共119頁,2024年2月25日,星期天為什么要使用類?采用簡單數(shù)據(jù)類型表示現(xiàn)實世界中的概念存在很大的局限性。例如:采用int型數(shù)據(jù)表示一個日期概念,需要使用3個變量:

intday,month,year;如果要表示2個人的生日,就要使用6個變量同時在使用日期概念時要同時對三個變量進行訪問而定義一個Date類表示日期就方便的多了……第18頁,共119頁,2024年2月25日,星期天面向?qū)ο蟪绦蛟O(shè)計的重點是類的設(shè)計,而不是對象的設(shè)計。第19頁,共119頁,2024年2月25日,星期天最基本的觀點:萬物皆對象類和對象的產(chǎn)生:具體---抽象----具體創(chuàng)建的是類型,使用的是對象類型是對象的抽象,對象是類型的實例總結(jié)第20頁,共119頁,2024年2月25日,星期天第6章類與對象第21頁,共119頁,2024年2月25日,星期天本章學(xué)習(xí)目標(biāo)掌握類的定義與創(chuàng)建對象的方法掌握方法及構(gòu)造方法重載掌握訪問控制修飾符和static的用法第22頁,共119頁,2024年2月25日,星期天本講內(nèi)容類的定義創(chuàng)建對象構(gòu)造方法第23頁,共119頁,2024年2月25日,星期天第一個例子:福娃說話publicclassDoll{/***福娃的名字*/privateStringname;publicDoll(Stringname){=name;}

/***福娃說話*/publicvoidspeak(){System.out.println(name);}}publicclassAppMain{

/***應(yīng)用程序的入口方法*/publicstaticvoidmain(Stringargs[]){Dollbeibei=newDoll("貝貝");//創(chuàng)建福娃貝貝

Dolljingjing=newDoll("晶晶");//創(chuàng)建福娃晶晶

Dollhuanhuan=newDoll("歡歡");//創(chuàng)建福娃歡歡

Dollyingying=newDoll("迎迎");//創(chuàng)建福娃迎迎

Dollnini=newDoll("妮妮");//創(chuàng)建福娃妮妮

beibei.speak();//福娃貝貝說話

jingjing.speak();//福娃晶晶說話

huanhuan.speak();//福娃歡歡說話

yingying.speak();//福娃迎迎說話

nini.speak();//福娃妮妮說話

}}類聲明類屬性(類成員變量)類方法main函數(shù)構(gòu)造方法第24頁,共119頁,2024年2月25日,星期天封裝是指一個對象由屬性和方法的有機體組成,可表示為:封裝的實體=數(shù)據(jù)+方法(行為)封裝可以避免一個對象的數(shù)據(jù)成員被不正當(dāng)?shù)卮嫒?,以達到信息隱藏和保護對象的效果對象就是一組變量和相關(guān)方法的封裝體,封裝實現(xiàn)了對象的模塊化和信息隱藏,

封裝的概念第25頁,共119頁,2024年2月25日,星期天

類就是一種數(shù)據(jù)類型,對象就是屬于某種類型的一個變量。類是對象的藍(lán)圖,這個藍(lán)圖就像汽車制造廠制造汽車的圖紙一樣,一種車型的圖紙,可以生產(chǎn)成千上萬輛相同型號的汽車。同樣在程序設(shè)計中,當(dāng)定義好一個類以后可以以該類為藍(lán)圖創(chuàng)建很多實例對象。電視機的狀態(tài)有種類、品牌、外觀、大小,行為有打開、關(guān)閉、調(diào)整音量

類和對象的概念第26頁,共119頁,2024年2月25日,星期天類的定義示例:一個描述點對象的類屬性x、y坐標(biāo)方法修改獲取x、y坐標(biāo)[修飾符]class類名{屬性定義(聲明)方法定義(聲明)}第27頁,共119頁,2024年2月25日,星期天屬性定義[修飾符]類型屬性名=[初值];類型可以是任何類型,包括類。屬性有默認(rèn)值。屬性是指在類體中所有方法外定義的變量第28頁,共119頁,2024年2月25日,星期天屬性默認(rèn)值數(shù)據(jù)類型

默認(rèn)值

boolean

false

char

‘\u0000’

整形(byte,short,int,long)

0

浮點型(float,double)

+0.0f或+0.0d

引用類型

null

第29頁,共119頁,2024年2月25日,星期天方法定義[修飾符]返回值類型方法名(參數(shù)列表){語句(組);return語句;}第30頁,共119頁,2024年2月25日,星期天練習(xí)定義一個三角形類Triangle,描述三角形對象.三角形有兩個屬性底和高,有幾個方法:一個setSide用于修改底的值,一個getSide用于獲取底的值;一個setHeight用于修改高的值,一個getHeight用于獲取高的值;還有一個findArea方法用于計算三角形的面積。第31頁,共119頁,2024年2月25日,星期天練習(xí)定義一個圓類Circle,描述圓對象。圓有一個屬性radius表示半徑,有三個方法:一個setR用于修改半徑的值,一個getR用于獲取半徑的值,還有一個findArea方法用于計算圓的面積。第32頁,共119頁,2024年2月25日,星期天對象和類如果將對象比作汽車,類就是汽車的設(shè)計圖紙。對象和類的關(guān)系:類是用來定義對象的屬性和方法的模板??梢詮囊粋€類中創(chuàng)建許多(對象)實例,創(chuàng)建一個實例被稱為實例化。對象和實例兩個詞通??梢曰Q。第33頁,共119頁,2024年2月25日,星期天對象的創(chuàng)建(1)聲明對象聲明該類類型的一個變量,這里并沒有定義一個對象,它只是一個能夠引用對象的變量,或稱為引用類型變量

Shirtmyshirt;第34頁,共119頁,2024年2月25日,星期天myshirt對象創(chuàng)建的內(nèi)存模型第35頁,共119頁,2024年2月25日,星期天(2)創(chuàng)建對象創(chuàng)建一個對象,并把對該對象的引用賦值給該變量,該對象稱為類的實例

myshirt=newShirt();第36頁,共119頁,2024年2月25日,星期天myshirtShirt()x對象創(chuàng)建的內(nèi)存模型包含兩部工作:1、創(chuàng)建堆內(nèi)存對象2、將對象首地址給myshirt第37頁,共119頁,2024年2月25日,星期天試分析下面的兩個圖第38頁,共119頁,2024年2月25日,星期天第39頁,共119頁,2024年2月25日,星期天引用類型總結(jié)(了解)類引用類型使用類定義的變量=引用類型變量存儲32位長的引用,用于引用對象引用類型變量=對象名第40頁,共119頁,2024年2月25日,星期天創(chuàng)建對象創(chuàng)建對象的語法:類名對象名=new

類名();調(diào)用對象屬性和方法的語法:對象名.屬性名對象名.方法名(實參列表)看一個示例:MpointTest_4.3.java第41頁,共119頁,2024年2月25日,星期天思考

設(shè)A為已定義的類名,下列聲明A類的對象a的語句中正確的是()。

A)Aa=newclass();B)publicAa=A();C)publicAa=newA();D)aA;第42頁,共119頁,2024年2月25日,星期天編程練習(xí)----設(shè)計電腦類設(shè)計一個電腦類“制造”(即創(chuàng)建)該電腦類的兩個實例,一個實例對象表示自己的電腦,一個實例對象表示張華的電腦,然后輸出每臺電腦的配置情況。提示:電腦的屬性可以有顏色,品牌,型號,硬盤容量,內(nèi)存容量等。方法可以有開機,運行軟件,關(guān)機,聯(lián)網(wǎng),輸出配置情況等。第43頁,共119頁,2024年2月25日,星期天構(gòu)造方法實例化對象就是給對象分配內(nèi)存空間,并將對象初始化,對象的初始化是由類的構(gòu)造函數(shù)來完成的。對象的初始化:就是給對象的屬性字段賦初值。對象在創(chuàng)建過程中,其實有些屬性是與生俱來的,如一個人的性別、膚色、父母等。因此在對象生成的時候就進行初始化。則更加自然與方便。構(gòu)造方法就是在一個類的對象創(chuàng)建后自動對其屬性進行初始化的一種特殊方法。第44頁,共119頁,2024年2月25日,星期天構(gòu)造方法比如:newCircle()就調(diào)用了無參的構(gòu)造方法。示例:Circlec=newCircle();第45頁,共119頁,2024年2月25日,星期天構(gòu)造方法語法[修飾符]類名(參數(shù)列表){//具體實現(xiàn);}第46頁,共119頁,2024年2月25日,星期天構(gòu)造方法的作用構(gòu)造方法一般用來初始化對象,比如可通過構(gòu)造方法給對象的屬性賦初值.第47頁,共119頁,2024年2月25日,星期天構(gòu)造方法-要點構(gòu)造方法名與類名一致構(gòu)造方法沒有返回值類型如果沒有定義構(gòu)造方法,系統(tǒng)會生成一個默認(rèn)的無參的構(gòu)造方法比如:Point(inta,intb){ x=a; y=b;}第48頁,共119頁,2024年2月25日,星期天方法的重載重載:一個類中如果同時存在多個方法名相同,參數(shù)列表不同的方法,則他們之間的關(guān)系稱為重載。第49頁,共119頁,2024年2月25日,星期天voidoutput1(){System.out.println("thisisfirstmethod");}voidoutput1(Strings){System.out.println("thisissecondmethod"+s);

}

classexample1{publicstaticvoidmain(Stringargs[]){OutTestres=newOutTest(); res.output1(); res.output1("haha"); }}第50頁,共119頁,2024年2月25日,星期天使用重載常犯的錯誤:voidsetCircle(Strings);booleansetCircle(Stringstr);這兩個方法的參數(shù)個數(shù)和類型完全相同,但返回類型不同!類中不能根據(jù)返回值不同來定義相同的方法第51頁,共119頁,2024年2月25日,星期天要點:方法名相同、參數(shù)列表不同

參數(shù)列表不同包括:參數(shù)數(shù)目不同,參數(shù)出現(xiàn)順序不同,參數(shù)的類型不同.注意:方法重載時返回值類型可以不同,所以不能根據(jù)返回值類型不同來判斷方法是否發(fā)生重載,只能根據(jù)參數(shù)列表來區(qū)分第52頁,共119頁,2024年2月25日,星期天構(gòu)造方法-要點如果在定義類時定義了帶參的構(gòu)造方法,系統(tǒng)將不會提供無參的構(gòu)造方法構(gòu)造方法只能用new在創(chuàng)建對象時調(diào)用,不能通過對象名或方法名調(diào)用第53頁,共119頁,2024年2月25日,星期天練習(xí)1.設(shè)i,j為類X中定義的int型屬性,下列X類構(gòu)造方法中不正確的是()。A)voidX(intk){i=k;}B)X(intk){i=k;}C)X(intm,intn){i=m;j=n;}D)X(){i=0;j=0;}第54頁,共119頁,2024年2月25日,星期天練習(xí)2.有一個類A,以下為其構(gòu)造方法的聲明,其中正確的是()。A)publicA(intx){...}B)staticA(intx){...}C)publica(intx){...}D)voidA(intx){...}第55頁,共119頁,2024年2月25日,星期天練習(xí)

在前面的圓Circle類里,定義兩個構(gòu)造方法,一個是無參數(shù)的構(gòu)造方法,另一個是帶參的構(gòu)造方法,在測試類中分別用兩個構(gòu)造方法創(chuàng)建半徑為5和半徑為10的圓,求圓的面積并打印出來.第56頁,共119頁,2024年2月25日,星期天練習(xí)定義一個學(xué)生類,包含姓名和性別兩個屬性,為該類提供三個構(gòu)造方法為屬性賦值,構(gòu)造方法分別為無參、帶一個參數(shù)和帶兩個參數(shù),創(chuàng)建toString方法輸出學(xué)生信息。在主方法中分別用3個構(gòu)造方法創(chuàng)建3個對象,調(diào)用toString方法輸出學(xué)生信息。第57頁,共119頁,2024年2月25日,星期天總結(jié)如何定義類?如何創(chuàng)建對象?第58頁,共119頁,2024年2月25日,星期天方法第59頁,共119頁,2024年2月25日,星期天創(chuàng)建方法例如:publicstaticintmax(intnum1,intnum2){if(num1>num2)returnnum1;elsereturnnum2;}第60頁,共119頁,2024年2月25日,星期天創(chuàng)建方法修飾符是可選的,它指定了方法的屬性并且告訴編譯器該方法可以如何調(diào)用。方法可以返回一個值。返回值類型是方法要返回的值的數(shù)據(jù)類型。若方法不返回值,則返回值類型為關(guān)鍵字void。除構(gòu)造方法外,所有的方法都要求有返回值類型。方法可以有一個參數(shù)列表,按方法的規(guī)范稱為形式參數(shù)。當(dāng)方法被調(diào)用時,形式參數(shù)用變量或數(shù)據(jù)替換,這些變量或數(shù)據(jù)稱為實際參數(shù)。參數(shù)是可選的。方法體包括一個定義方法做什么的語句集合。第61頁,共119頁,2024年2月25日,星期天創(chuàng)建方法有返回值的方法要求有關(guān)鍵字return,而返回值類型為void的方法則可以沒有。返回值類型為void類型的方法也可以使用return語句,用來終止方法并返回該方法的調(diào)用者。執(zhí)行return語句后方法終止。第62頁,共119頁,2024年2月25日,星期天調(diào)用方法根據(jù)方法是否有返回值,通常有兩種途徑調(diào)用方法:如果方法返回一個值,對方法的調(diào)用通常就當(dāng)做處理一個值。如:intlarger=max(3,4);如果方法返回void,對方法的調(diào)用必定是一條語句。如:System.out.println(“WelcometoJava!”);第63頁,共119頁,2024年2月25日,星期天調(diào)用方法當(dāng)程序調(diào)用方法時,程序控制轉(zhuǎn)移到了被調(diào)用的方法中。執(zhí)行return語句或遇到方法結(jié)束的右括號時,被調(diào)用方法將程序控制還給調(diào)用者。例如: voidmethod1() {System.out.println(method2());} intmethod2() {inti=method3();returni;} intmethod3() {return10;}第64頁,共119頁,2024年2月25日,星期天調(diào)用方法例測試max方法這個例子演示怎樣創(chuàng)建和調(diào)用max方法。源程序:TestMax.java第65頁,共119頁,2024年2月25日,星期天參數(shù)傳遞方法的威力是它處理參數(shù)的能力。調(diào)用方法時,需要提供實參,它們必須在類型、次序和數(shù)量上與方法中所對應(yīng)的形參匹配,這叫做參數(shù)順序匹配。第66頁,共119頁,2024年2月25日,星期天參數(shù)傳遞例如:voidnPrintln(Stringmessage,intn){for(inti=0;i<n;i++)System.out.println(message);}語句nPrintln(“Hello”,3)把實參“Hello”傳給形參message,把3傳給n,然后打印3遍“Hello”。語句nPrintln(3,”Hello”)就是錯誤的,因為實參和形參不匹配。第67頁,共119頁,2024年2月25日,星期天參數(shù)按值傳遞在調(diào)用帶參數(shù)的方法時,實參的值復(fù)制到方法中稱為按值傳遞。無論方法中的形參怎樣變化,方法外的實參不受影響。例4.2測試按值傳遞

本程序證實方法中的參數(shù)傳遞是按值傳遞的。 源程序:TestPassByValue.java第68頁,共119頁,2024年2月25日,星期天練習(xí)編寫方法,求三個整數(shù)的平均值,平均值的類型要求為雙精度浮點型。在main方法中測試這個方法。第69頁,共119頁,2024年2月25日,星期天重載方法方法重載就是指,兩個方法具有相同名稱和不同的參數(shù)形式。方法名與參數(shù)形式合稱方法頭標(biāo)志。調(diào)用方法時,Java運行系統(tǒng)能夠根據(jù)方法頭標(biāo)志決定調(diào)用哪個方法。重載方法可使程序清晰易讀。執(zhí)行相似任務(wù)的方法應(yīng)該給予相同的名稱。被重載的方法必須具有不同的參數(shù)形式。不能基于不同的修飾符或返回值類型重載方法。第70頁,共119頁,2024年2月25日,星期天重載方法例4.3重載max方法doublemax(doublenum1,doublenum2){if(num1>num2)returnnum1;elsereturnnum2;}與前面的max方法同名,但參數(shù)形式不同。第71頁,共119頁,2024年2月25日,星期天練習(xí)重載上一個求整數(shù)平均值的方法,實現(xiàn)求三個雙精度浮點數(shù)的平均值。在main方法中測試這個重載的方法與之前整數(shù)平均值的方法第72頁,共119頁,2024年2月25日,星期天方法抽象方法抽象是把方法的應(yīng)用同實現(xiàn)分離開來。在不知道方法如何實現(xiàn)的情況下,用戶也可以使用方法。如果要改變方法的實現(xiàn),只要不改變方法頭標(biāo)志,提供給用戶的程序就不受影響。第73頁,共119頁,2024年2月25日,星期天例子一個根據(jù)員工基本計算工資的程序:publicclassTest{publicstaticvoidmain(String[]args){ intlevel=0; System.out.println(“等級”+level+”的工資是:”+salary(level));}}第74頁,共119頁,2024年2月25日,星期天例子salary方法定義:staticintsalary(intlevel){switch(level){ case0:return1000; case1:return2000; case2:return2500; default:return0; }}第75頁,共119頁,2024年2月25日,星期天練習(xí)編寫方法求一個double數(shù)值的向右取整,再寫一個方法求它向左取整。比如:5.4的向右取整為6,而向左取整為5;而5.0的向右取整為5,向左取整也為5。寫一個方法計算一個整數(shù)各位數(shù)字的和,使用下面的方法說明:publicstaticintsumDigits(longn)比如:sumDigits(234)返回2+3+4=9第76頁,共119頁,2024年2月25日,星期天變量的作用域指變量可以在程序中引用的范圍。在方法中定義的變量稱為局部變量。

局部變量的作用域從聲明變量的地方開始,直到包含該變量的塊結(jié)束為止。參數(shù)是一個局部變量,作用域涵蓋整個方法。for循環(huán)頭中初始的變量,作用域是整個for循環(huán)可在同一個方法不同塊里聲明同名局部變量。

不能在嵌套或同一塊中兩次聲明同一局部變量。第77頁,共119頁,2024年2月25日,星期天關(guān)于Math教材p137第78頁,共119頁,2024年2月25日,星期天練習(xí)蒙特卡羅模擬使用隨機數(shù)和概率來解決問題。這個方法在數(shù)學(xué)、物理、化學(xué)和財經(jīng)方面有很廣的應(yīng)用。使用蒙特卡羅模擬來估算pai值.為了使用蒙特卡羅方法來估算pai值,畫出一個圓的外接正方形,假設(shè)這個圓的半徑為1。那么圓面積就是pai而外接正方形的面積是4。隨機產(chǎn)生正方形中的一個點。該點落在這個圓內(nèi)的概率為circleArea/squareArea(圓面積/正方形面積)=pai/4.編寫程序,在正方形內(nèi)隨機產(chǎn)生10000個點,100000個點和1000000個點,用numberOfHits表示落在圓內(nèi)的點。由此求出pai的近似值。第79頁,共119頁,2024年2月25日,星期天幾個例題教材p131最大公約數(shù)素數(shù)第80頁,共119頁,2024年2月25日,星期天本節(jié)課內(nèi)容包訪問控制修飾符static修飾符第81頁,共119頁,2024年2月25日,星期天Java中允許將多個類收集在一起成為一組,稱為包(package)。聲明包的方法(將類放入包中)package包名稱;例如:packagech04;示例:A.java定義包(package)注意,package必須寫在程序的第一條第82頁,共119頁,2024年2月25日,星期天包(package)為什么使用包?主要原因是防止兩位程序員取了相同的類別名稱,包嵌套的層次可以用來保證類名的唯一性,避免同名類沖突。第83頁,共119頁,2024年2月25日,星期天包與文件目錄Java要求包名與文件系統(tǒng)的目錄結(jié)構(gòu)一一對應(yīng)。一個包實際上是包含類字節(jié)碼的目錄package.neusoft.graphics;classCircle {…..}Circle.java

Circle.classcneduneusoftgraphicsCircle.class第84頁,共119頁,2024年2月25日,星期天使用包中的類使用其他包中的public類常用是:關(guān)鍵字import包名.類名;例:importjava.util.Scanner;示例:AA.java

AATest.java注意:只能引入其他包中的public類第85頁,共119頁,2024年2月25日,星期天注意也可以引入整個包例如:importjava.util.*;注意:*表示引入一個單獨包下的所有類,而不是引入所有以java.util為前綴的所有包。第86頁,共119頁,2024年2月25日,星期天包注意:package必須是第一條語句只能使用其他包中的public類如果一個程序中使用兩個包中的類同名,在使用類名前加上包名前綴第87頁,共119頁,2024年2月25日,星期天例如:

java.util和java.sql包中都有一個Date類,當(dāng)程序如下所寫時importjava.util.*;importjava.sql.*;

使用Date時,如定義Datetody;是錯誤的第88頁,共119頁,2024年2月25日,星期天這時需在類前加完整的包名,如:java.util.Datedeadline=newjava.util.Date(10000)java.sql.Datetoday=newjava.sql.Date(10000)所以,當(dāng)類放在有名包中時,類的全稱應(yīng)該是包名.類名.第89頁,共119頁,2024年2月25日,星期天練習(xí)定義一個類A,放到pack1包中;定義一個類B,放到pack2包中;在類B中定義main方法,在main方法中創(chuàng)建類A的對象。觀察:兩個類的字節(jié)碼文件的位置第90頁,共119頁,2024年2月25日,星期天通過前面的練習(xí),看下面的注意(了解)當(dāng)源程序沒有指定包的時候,默認(rèn)這樣的程序都是放在默認(rèn)包中,或稱無名包。

無名包中的所有類都可以互相引用;但無名包中的類是不能被有名包中的類引用,而有名包中的類可以被無名包中的類引用第91頁,共119頁,2024年2月25日,星期天訪問控制修飾符類的訪問控制修飾符public:包內(nèi)外都可訪問默認(rèn):只能包內(nèi)訪問示例:AA.javaAATest.java第92頁,共119頁,2024年2月25日,星期天訪問控制修飾符

public:用它定義的類、方法和屬性,所有程序都可以訪問。

protected:用它定義的方法或?qū)傩栽谕粋€包中的類可訪問,或者在不同包中某類的子類可訪問。默認(rèn)修飾符:即類、方法和屬性前沒有修飾符的時候,那么該類、方法和屬性可以被同一個包中的任何類訪問。private:用它定義的方法或?qū)傩裕荒苡啥x該方法的類訪問,而其他類不能訪問第93頁,共119頁,2024年2月25日,星期天類與屬性、方法的訪問修飾符public缺省protectedprivate類√√屬性√√√√方法√√√√第94頁,共119頁,2024年2月25日,星期天被不同修飾符修飾的屬性和方法與被訪問關(guān)系類屬性和方法同一類同一包其他包publicpublic√√√protected√√子類可訪問缺省√√private√缺省public√√protected√√缺省√√private√例:AA414.java

AA414Test.java

第95頁,共119頁,2024年2月25日,星期天注意:訪問控制修飾符不能修飾方法中的局部變量,可以修飾屬性。在方法內(nèi)部訪問控制修飾符會引起編譯錯誤。大多數(shù)情況下,構(gòu)造方法應(yīng)該是public的。但是,如果想防止用戶創(chuàng)建類的實例,可以使用私有的構(gòu)造方法。第96頁,共119頁,2024年2月25日,星期天訪問控制修飾符建議方法和構(gòu)造方法一般為public屬性一般為private對私有屬性的訪問通過訪問器方法完成(set方法和get方法)第97頁,共119頁,2024年2月25日,星期天訪問器方法對象不能直接訪問私有域,但是用戶常常需要檢索和修改數(shù)據(jù)域。為了能夠訪問數(shù)據(jù)域,可以為私有數(shù)據(jù)域添加讀取方法和設(shè)置方法,這些方法稱為訪問器方法。第98頁,共119頁,2024年2月25日,星期天訪問器方法設(shè)置方法voidset屬性名(屬性類型的參數(shù))比如:對屬性radiusvoidsetRadius(doubleradius)獲取方法屬性類型get屬性名()比如:doublegetRadius()例Circle.java第99頁,共119頁,2024年2月25日,星期天static靜態(tài)屬性用static修飾的屬性,也稱為類屬性用于描述一類對象共享的屬性比如:員工的最低工資,學(xué)生的學(xué)校名稱等等可通過類名直接調(diào)用,也可通過對象調(diào)用示例:EmpTest_415.java第100頁,共119頁,2024年2月25日,星期天static靜態(tài)方法用static修飾的方法,也叫類方法靜態(tài)方法中不能訪問非靜態(tài)成員靜態(tài)方法在類加載的時候加載,當(dāng)我們在靜態(tài)方法中調(diào)用非靜態(tài)成員時,因為其未被分配空間,因此不能使用。第101頁,共119頁,2024年2月25日,星期天要點創(chuàng)建靜態(tài)屬性和靜態(tài)方法在第一次使用類的時候創(chuàng)建,所有類的對象共享非靜態(tài)屬性和非靜態(tài)方法在創(chuàng)建對象的時候創(chuàng)建,每個對象之間獨立第102頁,共119頁,2024年2月25日,星期天要點使用在類外,靜態(tài)屬性和靜態(tài)方法可以通過類名直接調(diào)用,也可以通過對象名調(diào)用。在類外,非靜態(tài)屬性和非靜態(tài)方法只能通過對象名調(diào)用。第103頁,共119頁,2024年2月

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論