面向?qū)ο蟮木幊袒菊Z(yǔ)法演示文稿_第1頁(yè)
面向?qū)ο蟮木幊袒菊Z(yǔ)法演示文稿_第2頁(yè)
面向?qū)ο蟮木幊袒菊Z(yǔ)法演示文稿_第3頁(yè)
面向?qū)ο蟮木幊袒菊Z(yǔ)法演示文稿_第4頁(yè)
面向?qū)ο蟮木幊袒菊Z(yǔ)法演示文稿_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

面向?qū)ο蟮木幊袒菊Z(yǔ)法演示文稿目前一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)優(yōu)選面向?qū)ο蟮木幊袒菊Z(yǔ)法目前二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)程序設(shè)計(jì)語(yǔ)言的發(fā)展機(jī)器語(yǔ)言-由計(jì)算機(jī)硬件系統(tǒng)可以識(shí)別的二進(jìn)制指令組成的語(yǔ)言,這種語(yǔ)言中的指令都是由0,1組成的序列,稱(chēng)這樣的序列為一條機(jī)器指令。如101101110001匯編語(yǔ)言-由機(jī)器指令映射出來(lái)的容易被人讀懂的助記憶符,如ADDDXCX高級(jí)語(yǔ)言機(jī)器碼——低級(jí)——高級(jí)目前三頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)面向過(guò)程的程序設(shè)計(jì)設(shè)計(jì)思路自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。程序結(jié)構(gòu)按功能劃分為若干個(gè)基本模塊,形成一個(gè)樹(shù)狀結(jié)構(gòu)。各模塊間的關(guān)系盡可能簡(jiǎn)單,功能上相對(duì)獨(dú)立;每一模塊內(nèi)部均由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成。其模塊化實(shí)現(xiàn)的具體方法是使用子程序。優(yōu)點(diǎn)有效地將一個(gè)較復(fù)雜地程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開(kāi)發(fā)和維護(hù)。目前四頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)面向過(guò)程的程序設(shè)計(jì)的局限在面向過(guò)程程序設(shè)計(jì)中,被操作的數(shù)據(jù)仍然是嵌入在編程語(yǔ)句中的,并且與程序邏輯混合在一起,計(jì)算機(jī)的信息世界與現(xiàn)實(shí)世界之間的映射關(guān)系仍然不直接,不明確。用面向過(guò)程的方法開(kāi)發(fā)較大的軟件系統(tǒng),數(shù)據(jù)缺乏保護(hù)。使用面向過(guò)程程序設(shè)計(jì)方法建立的應(yīng)用程序是很難修改。目前五頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)面向?qū)ο蟪绦蛟O(shè)計(jì)的概念面向?qū)ο蟪绦蛟O(shè)計(jì)是建立在結(jié)構(gòu)化程序設(shè)計(jì)基礎(chǔ)上的,但它不再是從功能入手,而是從對(duì)象(人、地方、事情等)入手;面向?qū)ο蟪绦蛟O(shè)計(jì)以類(lèi)作為構(gòu)造程序的基本單位,它具有封裝、數(shù)據(jù)抽象、繼承、多態(tài)等特點(diǎn);目前六頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)面向?qū)ο蟮姆椒▽W(xué)世界是由什么組成的?名勝人物品動(dòng)物,植物……

目前七頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)對(duì)象一般意義上的對(duì)象是現(xiàn)實(shí)世界中的一個(gè)實(shí)際存在的事物,可以是有形的(比如一輛汽車(chē)),也可以是無(wú)形的(比如一項(xiàng)計(jì)劃),是構(gòu)成世界的一個(gè)獨(dú)立單位,具有:

對(duì)象標(biāo)識(shí):即對(duì)象名,是一個(gè)對(duì)象區(qū)別于其他對(duì)象標(biāo)識(shí)符。

對(duì)象狀態(tài):可以用某種數(shù)據(jù)來(lái)描述

對(duì)象行為:對(duì)象所表現(xiàn)的行為或具有的功能目前八頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)對(duì)象

顏色:灰色

排量:3.0剎車(chē)產(chǎn)地:德國(guó)行駛名字:保時(shí)捷行為狀態(tài)

顏色:紅色

排量:4.0剎車(chē)產(chǎn)地:意大利行駛名字:法拉利行為狀態(tài)有各自不同的狀態(tài)目前九頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)對(duì)象布蘭尼朱麗葉顧客姓名:朱麗葉年齡:28體重:52千克操作:購(gòu)買(mǎi)商品姓名:布蘭尼職銜:收銀員年齡:35體重:60千克操作:收款打印賬單目前十頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)對(duì)象的特征——屬性屬性——對(duì)象具有的各種特征每個(gè)對(duì)象的每個(gè)屬性都擁有特定值例如:布蘭尼和朱麗葉的體重不一樣

60kg布蘭尼屬性

35歲收銀員布蘭尼目前十一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)對(duì)象的特征——方法方法——對(duì)象執(zhí)行的操作打單收銀方法刷卡收銀員布蘭尼目前十二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)對(duì)象的屬性和方法列出尼古拉斯·凱奇駕駛的這輛法拉利F360Spider的屬性和方法列出小狗對(duì)象的屬性和方法屬性:品牌:法拉利型號(hào):F360Spider

顏色:黃色價(jià)格:380萬(wàn)元方法:發(fā)動(dòng)停止加速屬性:

顏色:白色方法:

叫跑吃目前十三頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)說(shuō)一說(shuō)教室里的對(duì)象描述他們的屬性和方法顏色:黑色品牌:BENQ投影姓名:張三年齡:20學(xué)習(xí)目前十四頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)抽象分類(lèi)-人類(lèi)通常的思維方式分類(lèi)所依據(jù)的原則-抽象忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類(lèi),得出一個(gè)抽象的概念。目前十五頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)抽象對(duì)象類(lèi)(抽象化)Shape目前十六頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)從對(duì)象抽象出“類(lèi)”抽取出下列對(duì)象的屬性和方法的共同特征

轎車(chē)顧客目前十七頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)類(lèi)面向?qū)ο蠓椒ㄖ械摹邦?lèi)”具有相同屬性和方法的一組對(duì)象的抽象的描述。類(lèi)的數(shù)據(jù)成員是對(duì)對(duì)象屬性的抽象,類(lèi)的方法成員是對(duì)對(duì)象行為的抽象,而類(lèi)本身就是對(duì)對(duì)象的抽象。類(lèi)與對(duì)象的關(guān)系猶如模具和鑄件之間的關(guān)系,一個(gè)屬于某類(lèi)的對(duì)象稱(chēng)為該類(lèi)的一個(gè)實(shí)例。目前十八頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)對(duì)象類(lèi)(抽象化)類(lèi)對(duì)象(具體化)王艷2年級(jí)3班劉強(qiáng)5年級(jí)1班范小飛2年級(jí)1班Student類(lèi)目前十九頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)類(lèi)和對(duì)象小汽車(chē)

顏色:灰色

排量:3.0

剎車(chē)產(chǎn)地:德國(guó)行駛名字:保時(shí)捷行為狀態(tài)類(lèi)的實(shí)例化,是由類(lèi)具體化對(duì)象類(lèi)產(chǎn)地車(chē)體顏色行駛剎車(chē)…歸納一組相似對(duì)象的共性對(duì)象屬性方法目前二十頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)封裝把對(duì)象的屬性和方法結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位對(duì)象的屬性和方法通常被封裝在一起,共同體現(xiàn)事物的特性,二者相輔相承,不能分割目前二十一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)封裝封裝第一個(gè)涵義是,把對(duì)象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(即對(duì)象)。第二個(gè)涵義也稱(chēng)作“信息隱蔽”,即盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外形成一個(gè)邊界(或者說(shuō)形成一道屏障),只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。目前二十二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)繼承繼承是面向?qū)ο笳Z(yǔ)言的另一特性。類(lèi)與類(lèi)之間可以組成繼承層次,一個(gè)類(lèi)的定義(子類(lèi))可以定義在另一個(gè)已定義類(lèi)(父類(lèi))的基礎(chǔ)上。子類(lèi)可以繼承父類(lèi)中的屬性和操作,也可以定義自己的屬性和操作。因而具有繼承這一特性所帶來(lái)的優(yōu)勢(shì),大大增加了程序的重用性。目前二十三頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)面向?qū)ο蟮姆椒▽W(xué)繼承ShapeTriangleRectangleEllipseSquarePolygonCircle汽車(chē)轎車(chē)跑有四個(gè)輪子跑有四個(gè)輪子目前二十四頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)多態(tài)多態(tài)性多態(tài)性是指不同類(lèi)型的對(duì)象接收相同的消息時(shí)產(chǎn)生不同的行為。如電梯系統(tǒng)中,當(dāng)向按鈕對(duì)象發(fā)送消息pressButton()時(shí),不同按鈕對(duì)象如電梯內(nèi)部按鈕(ElevatorButton)和樓層按鈕(FloorButton)會(huì)自動(dòng)判斷自己的所屬類(lèi)并執(zhí)行相應(yīng)的服務(wù)。目前二十五頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)消息機(jī)制在面向?qū)ο蠹夹g(shù)中,對(duì)象間的交互是通過(guò)消息的傳遞來(lái)完成的。消息處理方法就是對(duì)象的成員方法。Windows操作系統(tǒng)也是以消息為基礎(chǔ),事件為驅(qū)動(dòng)的。目前二十六頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.2類(lèi)的定義類(lèi)是對(duì)象的模板,使用對(duì)象前必須先創(chuàng)建類(lèi)[修飾符]class

類(lèi)名[extends父類(lèi)][implements接口名]

{

成員變量聲明; //描述對(duì)象的狀態(tài)方法聲明; //實(shí)現(xiàn)對(duì)象的行為}publicclassCustomer{ publicstring name; publicdouble creditLimit; publicint customerID;}類(lèi)訪問(wèn)修飾符默認(rèn)為:friendly

目前二十七頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.2類(lèi)的定義類(lèi)是組成Java程序的基本要素。類(lèi)封裝了一類(lèi)對(duì)象的狀態(tài)和方法。類(lèi)是用來(lái)定義對(duì)象的模板。類(lèi)的實(shí)現(xiàn)包括兩部分:類(lèi)聲明和類(lèi)體。“classCustomer”叫做類(lèi)聲明;“Customer”是類(lèi)名。習(xí)慣上類(lèi)名的第一個(gè)字母大寫(xiě),但這不是必須的。類(lèi)聲明之后的一對(duì)大括號(hào)“{”,“}”以及它們之間的內(nèi)容稱(chēng)做類(lèi)體。目前二十八頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.2類(lèi)的定義

類(lèi)修飾符:public公共類(lèi)、private私有類(lèi)、protected受保護(hù)類(lèi);abstract抽象類(lèi);final最終類(lèi)。

class:是關(guān)鍵字,是聲明類(lèi)的必須的符號(hào)。

類(lèi)名:是類(lèi)設(shè)計(jì)者指定的標(biāo)識(shí)符。

父類(lèi):如果正在定義的類(lèi)需要從另一個(gè)類(lèi)中繼承所有的成員,被繼承的類(lèi)就是父類(lèi)。目前二十九頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)類(lèi)的訪問(wèn)控制頂層類(lèi)只能是public或默認(rèn)訪問(wèn)級(jí)別public級(jí)別的類(lèi)可以被同一個(gè)包或者其他包中的類(lèi)訪問(wèn)默認(rèn)級(jí)別的類(lèi)只能被同一個(gè)包中的類(lèi)訪問(wèn)publicclassSample{…}//public級(jí)別classSample{…}//默認(rèn)訪問(wèn)級(jí)別protectedclassSample{…}//非法privateclassSample{…}//非法目前三十頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)classtrapezia

{floatsupside,subside,high,area;//變量定義部分

floatcomputeArea()//方法定義

{area=(supside+subside)*high/2.0f;returnarea;}voidmodifyHigh(floath)//方法定義

{high=h;}}3.2類(lèi)的定義目前三十一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)成員變量成員變量是用來(lái)描述事物的靜態(tài)特征的。修飾符[修飾符]數(shù)據(jù)類(lèi)型變量名;public:可被所有其他類(lèi)引用。private:僅可被該類(lèi)自身引用和修改,不能被其他任何類(lèi)(包括子類(lèi))引用。protected:該類(lèi)自身、子類(lèi)、同一包中的其他類(lèi)。缺省:本包中的類(lèi)。static:類(lèi)成員變量,對(duì)所有的實(shí)例一致,引用時(shí)前綴可使用類(lèi)名或?qū)ο竺?。final:數(shù)值不變常量,定義同時(shí)應(yīng)對(duì)其進(jìn)行初始化。目前三十二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)成員變量和局部變量類(lèi)中變量定義部分所定義的變量被稱(chēng)為類(lèi)的成員變量。在方法體中定義的變量和方法的參數(shù)被稱(chēng)為局部變量。成員變量在整個(gè)類(lèi)內(nèi)都有效,局部變量只在定義它的方法內(nèi)有效。如果局部變量的名字與成員變量的名字相同,則成員變量被隱藏。這時(shí)如果想在該方法內(nèi)使用成員變量,必須使用關(guān)鍵字this。目前三十三頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)變量1類(lèi)型變量1;變量2類(lèi)型變量2;變量3類(lèi)型變量3;public返回類(lèi)型方法1(){

變量4類(lèi)型變量4;}public返回類(lèi)型方法2(){

變量5類(lèi)型變量5;}publicclassAutoLion{}AutoLion類(lèi)的方法別的類(lèi)的方法誰(shuí)能使用這些變量?方法1方法2成員變量局部變量局部變量成員變量和局部變量目前三十四頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)publicclassAutoLion{Stringcolor="黃色";publicvoidrun(){//方法1:跑System.out.println("正在以0.1米/秒的速度向前奔跑。");}

publicStringbark(){//方法2:叫Stringsound="吼";returnsound;}

publicStringgetColor(){//方法3:獲得顏色屬性returncolor;}

publicStringshowLion(){//方法4:輸出類(lèi)的描述信息return"這是一個(gè)"+getColor()+"的玩具獅子!叫聲是"+sound;}}可以調(diào)用嗎?成員變量和局部變量目前三十五頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)類(lèi)的方法(2)類(lèi)的方法類(lèi)的方法,用來(lái)規(guī)定類(lèi)屬性上的操作,實(shí)現(xiàn)類(lèi)對(duì)外界提供的服務(wù),也是類(lèi)與外界交流的接口。

Java中聲明方法的語(yǔ)法如下:

[修飾符]返回值類(lèi)型方法名(參數(shù)列表)throws異常1{//方法體聲明局部變量聲明;語(yǔ)句序列;}目前三十六頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)類(lèi)和對(duì)象類(lèi):相對(duì)對(duì)象而言,類(lèi)似于藍(lán)圖包含方法和數(shù)據(jù)對(duì)象:是類(lèi)的實(shí)例使用關(guān)鍵字new創(chuàng)建對(duì)象具有行為對(duì)象廚房起居室浴室書(shū)房飯廳儲(chǔ)藏室門(mén)廊類(lèi)目前三十七頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.2.2創(chuàng)建類(lèi)的實(shí)例對(duì)象創(chuàng)建一個(gè)對(duì)象包括對(duì)象的聲明和為對(duì)象分配內(nèi)存兩個(gè)步驟。

(1).對(duì)象的聲明。一般格式為:

PersonzhangPing;類(lèi)的名字對(duì)象名字;如:目前三十八頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.2.2創(chuàng)建類(lèi)的實(shí)例對(duì)象(2)為聲明的對(duì)象分配內(nèi)存使用new運(yùn)算符為聲明的對(duì)象分配內(nèi)存。如:

zhangPing=newPerson();目前三十九頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)classPerson{ floatheight,weight; Stringname; voidspeak(Strings){ System.out.println(s);}}classProgram{ publicstaticvoidmain(Stringargs[]){ PersonzhangPing;//聲明對(duì)象

zhangPing=newPerson(); }}

(3)對(duì)象的內(nèi)存模型3.2.2創(chuàng)建類(lèi)的實(shí)例對(duì)象目前四十頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)當(dāng)用Person類(lèi)聲明一個(gè)變量,即對(duì)象zhangPing時(shí),如例子中的對(duì)象:

PersonzhangPing;內(nèi)存模型如左圖所示

3.2.2創(chuàng)建類(lèi)的實(shí)例對(duì)象當(dāng)系統(tǒng)見(jiàn)到:zhangPing=newPerson();

時(shí),就會(huì)做兩件事:目前四十一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)①為height,weight,name各個(gè)變量分配內(nèi)存,即Person類(lèi)的成員變量被分配內(nèi)存空間。②new運(yùn)算符在為變量height,weight,name分配內(nèi)存后,將返回一個(gè)引用給對(duì)象變量zhangPing。3.2.2創(chuàng)建類(lèi)的實(shí)例對(duì)象目前四十二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)值類(lèi)型與引用類(lèi)型JAVA數(shù)據(jù)類(lèi)型分為兩類(lèi):值類(lèi)型和引用類(lèi)型。

值類(lèi)型:包括簡(jiǎn)單類(lèi)型、枚舉類(lèi)型。

引用類(lèi)型:包括類(lèi)、接口、數(shù)組。

一般把引用類(lèi)型的變量稱(chēng)為對(duì)象。目前四十三頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)值類(lèi)型與引用類(lèi)型區(qū)別堆棧堆56ij實(shí)際數(shù)據(jù)12345Hobj目前四十四頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)publicclassSchool{

//定義屬性

StringschoolName;

//學(xué)校的全稱(chēng)

intclassNum;

//教室的數(shù)目

intlabNum;

//機(jī)房的數(shù)目

//定義方法

publicStringtoString(){

returnschoolName+"\n"+

"配備:"+classNum+"教室"+labNum+"機(jī)房";

}

}定義類(lèi)的toString()方法,用于輸出類(lèi)相關(guān)的信息public

StringtoString(){

return字符串;//方法體}成員變量目前四十五頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)使用對(duì)象使用對(duì)象:使用“.”進(jìn)行以下操作給類(lèi)的屬性賦值:對(duì)象名.屬性調(diào)用類(lèi)的方法:對(duì)象名.方法名()school.Name=“鄭州輕工學(xué)院";//給屬性賦值school.toString();//調(diào)用類(lèi)的方法,該方法中的操作將被執(zhí)行目前四十六頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)publicclassInitSchool{

publicstaticvoidmain(String[]args){ Schoolschool=newSchool();System.out.println(school);school.Name=“鄭州輕工業(yè)學(xué)院";school.classNum=100;school.labNum=20;System.out.println(school);}}創(chuàng)建和使用對(duì)象示例說(shuō)一說(shuō)看到什么效果?目前四十七頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)編寫(xiě)學(xué)生類(lèi),輸出學(xué)生相關(guān)信息編寫(xiě)教師類(lèi),輸出教師相關(guān)信息學(xué)生類(lèi)屬性:姓名年齡參加的課程興趣方法:顯示學(xué)員個(gè)人信息教師類(lèi)屬性:姓名專(zhuān)業(yè)方向教授的課程教齡方法:顯示教師個(gè)人信息目前四十八頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.3構(gòu)造函數(shù)Studentzhang=newStudent();zhang.Name="張靚靚";zhang.Age=20;zhang.Hobby="唱歌歌";班級(jí)來(lái)了新學(xué)生添加學(xué)生對(duì)象學(xué)生類(lèi)實(shí)例化對(duì)象、設(shè)置屬性初始屬性若太多,設(shè)置麻煩能否在實(shí)例化時(shí)設(shè)置屬性?publicStudent(stringname,intage,stringhobby){

this.Name=name;this.Age=age;this.Hobby=hobby;}Studentzhang=newStudent("張靚靚",20,"唱歌歌");一次設(shè)置完成類(lèi)中加入這個(gè)方法添加的方法叫做構(gòu)造函數(shù)目前四十九頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)構(gòu)造函數(shù)[訪問(wèn)修飾符]

<類(lèi)名>(){//構(gòu)造函數(shù)的主體}publicclassEmployee{…

//默認(rèn)構(gòu)造函數(shù)

Employee()

{ qualification="研究生";

}

…}構(gòu)造函數(shù)名稱(chēng)同類(lèi)名,并沒(méi)有返回值。目前五十頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)構(gòu)造函數(shù)是類(lèi)中的一種特殊的方法構(gòu)造函數(shù)名與類(lèi)名相同,不返回任何值可初始化成員變量每次創(chuàng)建類(lèi)的實(shí)例都會(huì)調(diào)用此方法目前五十一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)staticvoidMain(String[]args)

{ //調(diào)用默認(rèn)構(gòu)造函數(shù)EmployeeobjEmployee=newEmployee();System.out.println(“資格="+objEmployee.qualification);(“薪水="+objEmployee.salary);

}}構(gòu)造函數(shù)classEmployee{privateStringname;privatechargender;privateStringqualification;privateintsalary;//默認(rèn)構(gòu)造函數(shù)privateEmployee()

{qualification=“研究生";

}實(shí)例化對(duì)象調(diào)用構(gòu)造函數(shù)使用new關(guān)鍵字目前五十二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)finalize()方法Java中一旦垃圾收集器準(zhǔn)備好釋放對(duì)象占用的存儲(chǔ)空間,它首先調(diào)用finalize(),而且只有在下一次垃圾收集過(guò)程中,才會(huì)真正回收對(duì)象的內(nèi)存。所以如果使用finalize(),就可以在垃圾收集期間進(jìn)行一些重要的清除或清掃工作。使用finalize()方法的一般格式如下:

protectedvoidfinalize(){//finalizationcodehere}

其中關(guān)鍵字protected是防止該類(lèi)之外的其他對(duì)象或代碼訪問(wèn)該方法。目前五十三頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.4方法的使用寫(xiě)出獅子對(duì)象的“跑”方法寫(xiě)出獅子對(duì)象的“叫”方法電動(dòng)玩具獅子屬性:顏色:黃色行為:跑叫按此按鈕,獅子開(kāi)始跑目前五十四頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.4方法的使用publicclassAutoLion{Stringcolor="黃色";

public

void

run(){System.out.println("正在以0.1米/秒的速度向前奔跑");}

publicStringbark(){Stringsound="吼";

returnsound;}}AutoLion類(lèi)代碼實(shí)現(xiàn)方法名稱(chēng)方法體返回類(lèi)型目前五十五頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)如何定義類(lèi)的方法方法(Method)是一組程序代碼的集合方法是類(lèi)或?qū)ο蟮男袨閷?duì)象需要做某些事情,在類(lèi)中添加方法方法的定義方法的名稱(chēng)方法的主體方法返回的數(shù)據(jù)類(lèi)型參數(shù)列表目前五十六頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.4方法的使用訪問(wèn)修飾符返回類(lèi)型方法名(參數(shù)列表){//方法的主體…}通過(guò)return返回值publicprivateintdoublestringvoid…命名規(guī)范:?jiǎn)卧~首字母大寫(xiě)——Pascal命名法參數(shù)傳遞訪問(wèn)修飾符(可選),默認(rèn)情況下為private如果不需要返回任何值,方法返回void數(shù)據(jù)類(lèi)型方法的聲明目前五十七頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)定義方法時(shí),需要注意以下幾點(diǎn):方法名不能和變量、常數(shù)或者類(lèi)中其它的成員相同。方法可以有參數(shù),也可以沒(méi)有參數(shù),但是不論是否有參數(shù),小括號(hào)都是必需的。結(jié)束某個(gè)方法的執(zhí)行,可以使用return語(yǔ)句,程序遇到return語(yǔ)句后,會(huì)將執(zhí)行流程交還給調(diào)用此方法的程序代碼段。如果聲明一個(gè)非void類(lèi)型的方法,則方法中必須至少有一個(gè)return語(yǔ)句。3.4方法的使用目前五十八頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)方法的返回值兩種情況如果方法具有返回值,方法中必須使用關(guān)鍵字return返回該值,返回類(lèi)型為該返回值的類(lèi)型如果方法沒(méi)有返回值,返回類(lèi)型為voidpublicclassStudent{Stringname="張三";publicvoidgetName(){

returnname;}……}返回類(lèi)型要匹配return

表達(dá)式;編譯錯(cuò)誤目前五十九頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)常見(jiàn)錯(cuò)誤-1publicclassSchool{……publicstaticvoidmain(String[]args){……

return"鄭州輕工業(yè)學(xué)院!";}}返回類(lèi)型是void方法中不能有返回值目前六十頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)常見(jiàn)錯(cuò)誤-2publicclassStudent{

publicdoublegetInfo(){

doubleweight=95.5;

doubleheight=1.69;

returnweight,height;}}方法至多可以返回一個(gè)值,不能返回多個(gè)值目前六十一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)方法調(diào)用方法是個(gè)“黑匣子”,完成某個(gè)特定的應(yīng)用程序功能,并返回結(jié)果方法調(diào)用:執(zhí)行方法中包含的語(yǔ)句

對(duì)象名.方法名();目前六十二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)方法調(diào)用classProgram{

publicintMyMethod(){System.out.println("thisisMyMethod.");inti=10;returni;}publicstaticvoidmain(String[]args){

Programmethod=newProgram();intj=5;j=method.MyMethod();System.out.println("thevalueis:“+j);}}目前六十三頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)方法參數(shù)下面代碼輸出結(jié)果是什么?publicstaticvoidmain(string[]args){intnum1=5,num2=10;//兩個(gè)數(shù)字

System.out.println(“交換前兩個(gè)數(shù)的值分別為:”+num1+“和”+num2);

Swap(num1,num2);//交換兩個(gè)數(shù)的值

System.out.println("交換后兩個(gè)數(shù)的值分別為:”+num1+“和”+num2);}//交換兩個(gè)數(shù)的方法privatestaticvoidSwap(intnum1,intnum2){inttemp;//中間變量

temp=num1;num1=num2;num2=temp;}目前六十四頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)方法參數(shù)傳遞引用類(lèi)型時(shí):類(lèi):Student參數(shù)在程序中被修改//傳遞引用類(lèi)型參數(shù)Studentscofield=

newStudent("Scofield",Genders.Male,28,"越獄獄");scofield.SayHi();Vote(scofield);scofield.SayHi();引用類(lèi)型:類(lèi)人氣屬性加1的方法目前六十五頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)方法參數(shù)classProgram{publicstaticvoidAddOne(inta) {a++;}publicstaticvoidmain(String[]args){inta=3;System.out.println("調(diào)用AddOne之前,a=“+a);AddOne(a);System.out.println("調(diào)用AddOne之后,a=“+a); }}1)傳遞值類(lèi)型的參數(shù)目前六十六頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)方法參數(shù)classProgram{publicstaticvoidAddOne(int[]a){a[0]++;}publicstaticvoidmain(String[]args){int[]a={3};System.out.println("調(diào)用AddOne之前,a=“+a[0]);AddOne(a);System.out.println("調(diào)用AddOne之后,a=“+a[0]); }}2)傳遞引用類(lèi)型的參數(shù)目前六十七頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)JVM在運(yùn)行時(shí),做完初始化之后,就會(huì)查找main()方法,從這里開(kāi)始整個(gè)程序的運(yùn)行。在main()方法的括號(hào)里面有一個(gè)形式參數(shù)“Stringargs[]”,可以接受系統(tǒng)所傳遞的參數(shù)。在命令行執(zhí)行一個(gè)程序通常的形式是:3.4.6命令行參數(shù)的使用參數(shù)列表中可以容納多個(gè)參數(shù),參數(shù)間以空格或制表符隔開(kāi),它們被稱(chēng)為命令行參數(shù)。

java

類(lèi)名

[參數(shù)列表]目前六十八頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.5訪問(wèn)控制所謂訪問(wèn)控制是指對(duì)象是否可以通過(guò)“.”運(yùn)算符操作成員變量或通過(guò)“.”運(yùn)算符使用成員方法。JAVA中有以下成員訪問(wèn)修飾符:public:任何類(lèi)都可以不受限制的存取這個(gè)類(lèi)的成員。private:所有方法和數(shù)據(jù)成員只能在此類(lèi)中使用protected:

除了類(lèi)內(nèi)可以使用之外,繼承自此類(lèi)的子類(lèi)也可以存取。缺省:在當(dāng)前包中都可以存取。目前六十九頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)修飾符與訪問(wèn)控制同一個(gè)類(lèi)同一個(gè)包不同包的子類(lèi)不同包非子類(lèi)private√缺省√√protected√√√public√√√√目前七十頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)classStudent{

privatestringname;//姓名

publicintage;//年齡

publicstringidNumber

;//身份證號(hào)}…staticvoidMain(string[]args){

StudentmyStudent=newStudent();

myS="張三";

myStudent.age=20;

}類(lèi)成員訪問(wèn)修飾符私有成員公有成員實(shí)例化一個(gè)對(duì)象可以訪問(wèn)無(wú)法訪問(wèn)編譯錯(cuò)誤

目前七十一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)類(lèi)成員訪問(wèn)修飾符staticvoidMain(string[]args){

StudentmyStudent=newStudent();

myStudent.age=-2;myStudent.idNumber="123456";

}非法數(shù)據(jù)身份證號(hào)不能被修改無(wú)法獲得數(shù)據(jù)無(wú)法正常賦值有時(shí)候?qū)㈩?lèi)中的字段公開(kāi)是不安全的如果設(shè)為私有成員能否對(duì)這些字段進(jìn)行規(guī)則約束或者只讀呢?目前七十二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)私有變量和私有方法一個(gè)類(lèi)中創(chuàng)建了另外一個(gè)類(lèi)的對(duì)象后,該類(lèi)不能通過(guò)對(duì)象名訪問(wèn)其私有變量和私有方法.publicclassDemoPrivate{ publicinta;//公共類(lèi)型的成員變量

privateintb;//私有類(lèi)型的成員變量

publicintgetA(){//公共類(lèi)型的成員方法

returna; } privateintgetB(){//私有類(lèi)型的成員方法

returnb; } publicDemoPrivate(inta,intb){//構(gòu)造方法

this.a=a; this.b=b; }目前七十三頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)私有變量和私有方法

publicstaticvoidmain(Stringargs[]) { DemoPrivateaDemoPrivate=newDemoPrivate(1,2);

//訪問(wèn)公共類(lèi)型的成員方法

inta=aDemoPrivate.getA(); System.out.println("變量a的值:"+a);

//訪問(wèn)私有類(lèi)型的成員方法

intb=aDemoPrivate.getB(); System.out.println("變量b的值:"+b); }}盡管成員變量和成員方法定義為私有類(lèi)型。但由于處于同一類(lèi)中,仍然能夠?qū)Τ蓡T變量和成員方法進(jìn)行訪問(wèn)。如果在另一類(lèi)中,則訪問(wèn)受到限制。目前七十四頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)2.公有變量和公有方法一個(gè)類(lèi)中創(chuàng)建了另外一個(gè)類(lèi)的對(duì)象后,該類(lèi)能夠通過(guò)對(duì)象名訪問(wèn)其公有變量和公有方法.packagepub1;publicclassDemopub1{//public修飾是必需的。

//公共類(lèi)型的成員變量

publicinta;

//公共類(lèi)型的成員方法

publicvoidmethod() { System.out.println(); }}目前七十五頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)packagepub2;importpub1.*;classDemopub2{ publicstaticvoidmain(Stringargs[]) { Demopub1aDemo1=newDemopub1();

//訪問(wèn)aDemo1中的公共成員方法

aDemo1.method();

//訪問(wèn)aDemo1中的公共成員變量

aDemo1.a=10; inta=aDemo1.a; System.out.println("aDemo1中的公共成員變量a的值:"+a); }}2.公有變量和公有方法目前七十六頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.默認(rèn)變量和默認(rèn)方法不用private、public、protected修飾符的成員變量和方法被稱(chēng)為友好變量和友好方法。一個(gè)類(lèi)創(chuàng)建了另外一個(gè)類(lèi)的一個(gè)對(duì)象后,如果兩個(gè)類(lèi)在同一包中,該類(lèi)中可以通過(guò)對(duì)象訪問(wèn)其默認(rèn)變量和默認(rèn)方法目前七十七頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)4.受保護(hù)的成員變量和方法一個(gè)類(lèi)創(chuàng)建了另外一個(gè)類(lèi)的一個(gè)對(duì)象后,如果兩個(gè)類(lèi)在同一包中,該類(lèi)能夠通過(guò)對(duì)象訪問(wèn)其protected變量和protected方法在后面學(xué)習(xí)類(lèi)的繼承時(shí),將講述protected和“友好”之間在繼承方面的區(qū)別。目前七十八頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)//Demopro3.Javapackagepro3;publicclassDemopro3{

//公共類(lèi)型的成員變量

publicinta;

//保護(hù)類(lèi)型的成員方法

protectedvoidmethod() { System.out.println(); }}【例】不同包中公共類(lèi)中protected修飾的方法的訪問(wèn)4.受保護(hù)的成員變量和方法目前七十九頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)packagepro4;importpro3.*;publicclassDemopro4{ publicstaticvoidmain(Stringargs[]) { Demopro3aDemo1=newDemopro3();

//不能訪問(wèn)Demopro3中的保護(hù)類(lèi)型成員方法

//原因是該方法是protected類(lèi)型

//aDemo1.method(); //可以訪問(wèn)Demopro3中的公共成員變量

aDemo1.a=10; inta=aDemo1.a; System.out.println("Demopro3中的公共成員變量a的值:"+a); }}4.受保護(hù)的成員變量和方法目前八十頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.5.2static關(guān)鍵字的使用類(lèi)可以具有靜態(tài)的成員,如靜態(tài)字段、靜態(tài)方法使用static關(guān)鍵字修飾訪問(wèn)修飾符static

數(shù)據(jù)類(lèi)型變量名;訪問(wèn)修飾符static返回值類(lèi)型方法名(參數(shù)列表)目前八十一頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.5.2static關(guān)鍵字的使用靜態(tài)變量屬于類(lèi)在類(lèi)的實(shí)例創(chuàng)建以前完成初始化,并且它在應(yīng)用程序的整個(gè)生存期內(nèi)一直存在。只開(kāi)辟一塊內(nèi)存空間存儲(chǔ),被同一個(gè)類(lèi)的所有實(shí)例共享,因此static字段也稱(chēng)為類(lèi)字段classLion

{ publicstaticstringfamily="felidae"; //貓科動(dòng)物}...//ALionobjectisnotcreatedinthiscodeSystem.out.println("Family:{0}",Lion.family);目前八十二頁(yè)\總數(shù)九十一頁(yè)\編于二十點(diǎn)3.5.2static關(guān)鍵字的使用實(shí)例變量必須首先實(shí)例化類(lèi)的一個(gè)對(duì)象,再通過(guò)對(duì)象訪問(wèn),因此稱(chēng)為實(shí)例變量classCat{stringname;staticstringfood;}staticvoidMain(){Cat.food=“fish”;//OKC=“Kitty”;//錯(cuò)誤

Catcat1=newCat();=“Kitty”;//OK}static變量不依賴(lài)于具體對(duì)象,可通過(guò)類(lèi)名直接訪問(wèn),無(wú)需先生成一個(gè)實(shí)例對(duì)象,也可以通過(guò)實(shí)例對(duì)象訪問(wèn)類(lèi)變量目前八十三頁(yè)\總數(shù)九

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論