版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章Java面向?qū)ο缶幊袒A(chǔ)3.1面向?qū)ο筌浖_(kāi)發(fā)概述3.2Java的類3.3構(gòu)造方法與對(duì)象的創(chuàng)建3.4定義和使用Java的方法3.5內(nèi)部類與匿名類學(xué)習(xí)要點(diǎn):1.理解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念2.理解Java包中類的基本概念,掌握定義Java類和創(chuàng)建對(duì)象的方法3.掌握構(gòu)造函數(shù):構(gòu)造函數(shù)的特點(diǎn)、構(gòu)造函數(shù)的定義4.掌握方法的定義,理解方法的形式參數(shù)與實(shí)際參數(shù)、方法的返回值、方法的調(diào)用過(guò)程5.了解內(nèi)部類和匿名類的定義與使用方式3.1面向?qū)ο筌浖_(kāi)發(fā)概述面向?qū)ο蟪绦蛟O(shè)計(jì)是一種運(yùn)用對(duì)象、類、繼承、封裝、聚合、關(guān)聯(lián)、消息、多態(tài)性等概念來(lái)構(gòu)造系統(tǒng)的軟件開(kāi)發(fā)方法,其核心思想是用面向?qū)ο蟮木幊陶Z(yǔ)言把現(xiàn)實(shí)世界的實(shí)體描述成計(jì)算機(jī)能理解、可操作的、具有一定屬性和行為的對(duì)象,將數(shù)據(jù)及數(shù)據(jù)的操作封裝在一起,通過(guò)調(diào)用對(duì)象的不同方法來(lái)完成相關(guān)事件。對(duì)象、實(shí)體與類人classPerson{}Persontom=newPerson()設(shè)計(jì)方法特點(diǎn)代表性語(yǔ)言面向機(jī)器用機(jī)器指令為特定硬件系統(tǒng)編制程序,其目標(biāo)代碼短,運(yùn)行速度和效率高,但可讀性和移植性差。86系列匯編語(yǔ)言面向過(guò)程用高級(jí)程序設(shè)計(jì)語(yǔ)言按計(jì)算機(jī)能夠理解的邏輯來(lái)描述要解決的問(wèn)題及其解決方法,是過(guò)程驅(qū)動(dòng)的,程序的可讀性和移植性好,核心是數(shù)據(jù)結(jié)構(gòu)和算法。但大型程序維護(hù)起來(lái)比較困難。Fortran(50年代)Basic(60年代)C(70年代)面向?qū)ο笥妹嫦驅(qū)ο蟮木幊陶Z(yǔ)言把現(xiàn)實(shí)世界的實(shí)體描述成計(jì)算機(jī)能理解、可操作的、具有一定屬性和行為的對(duì)象,將數(shù)據(jù)及數(shù)據(jù)的操作封裝在一起,通過(guò)調(diào)用各對(duì)象的不同方法來(lái)完成相關(guān)事件,是事件驅(qū)動(dòng)的,其核心是類和對(duì)象,程序易于維護(hù)、擴(kuò)充。C++(80年代)VB(90年代)ObjectPascal(90年代)Java(90年代)3.1.1程序設(shè)計(jì)方法的發(fā)展3.1.2面向?qū)ο蟮膸讉€(gè)基本概念對(duì)象(Object):系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。由一組屬性和施加于該組屬性的一組操作構(gòu)成。對(duì)象可以是有形的事物,例如一臺(tái)電腦;也可以是無(wú)形的事物,例如一項(xiàng)工作計(jì)劃。類(Class):是具有相同屬性和操作的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,它由一個(gè)類名、一組屬性和一組操作構(gòu)成。屬性(Property):是對(duì)象的特征,包括狀態(tài)和行為。事件(Event)——由對(duì)象識(shí)別的一個(gè)外部動(dòng)作屬性動(dòng)態(tài)屬性——“行為”,用方法表示靜態(tài)屬性——“狀態(tài)”,用變量表示類是一個(gè)抽象的概念,表示一個(gè)有共同特征的對(duì)象集合。對(duì)象是一個(gè)具體的概念,它是類的一個(gè)具體的實(shí)例。類的作用是創(chuàng)建對(duì)象。類是創(chuàng)建對(duì)象的模板,對(duì)象是類的一個(gè)實(shí)例。類與對(duì)象的關(guān)系“人”類和對(duì)象“李四”的關(guān)系如何理解“對(duì)象”?對(duì)象的行為是什么?——方法對(duì)象的狀態(tài)是什么?——屬性對(duì)象的身份是什么?——名稱狀態(tài)可能影響行為每個(gè)對(duì)象“總是”有不同的身份,一個(gè)類的多個(gè)對(duì)象“可能”有不同的狀態(tài)名稱也叫“引用”三方面特征
包含——當(dāng)對(duì)象A是對(duì)象B的屬性時(shí),稱對(duì)象B包含對(duì)象A;
如:發(fā)動(dòng)機(jī)與汽車(chē),CPU與計(jì)算機(jī)
繼承——當(dāng)對(duì)象A是對(duì)象B的特例時(shí),稱對(duì)象A繼承了對(duì)象B
如:北京大學(xué)和大學(xué),液晶顯示器和顯示器
關(guān)聯(lián)——當(dāng)對(duì)象A的引用是對(duì)象B的屬性時(shí),稱對(duì)象A和對(duì)象
B之間是關(guān)聯(lián)關(guān)系。
如:汽車(chē)與制造商對(duì)象的之間關(guān)系繼承性(inheritance)
自動(dòng)地共享具有層次關(guān)系的類(子類)和對(duì)象中的方法和數(shù)據(jù)的機(jī)制。
當(dāng)類Y繼承類X時(shí),就表明類Y是類X的子類,而類X是類Y的超/父類。類Y由兩部分組成:繼承部分和增加部分。 增加部分是專為Y編寫(xiě)的新代碼;繼承部分可以是簡(jiǎn)單的等同,也可以更為豐富:如對(duì)性質(zhì)重命名、重實(shí)現(xiàn)、復(fù)制、置空等。XY繼承部分
增加部分
Y繼承X繼承方式:簡(jiǎn)單繼承(singleinheritance):一個(gè)類至多只能繼承一個(gè) 類(樹(shù)結(jié)構(gòu))。多重繼承(multipleinheritance):一個(gè)類直接繼承多個(gè)超 類(網(wǎng)狀結(jié)構(gòu))。類Y1,Y2簡(jiǎn)單繼承類XXYY2Y1X1X2類Y多重繼承類X1,X2例:一個(gè)圖形系統(tǒng)()Figure
Line
Ellipse
Polygon
CloseFigure
OpenFigure
Pentagon
Triangle
Rectangle
Circle
Arc
(象素寬度,顏色,平移,旋轉(zhuǎn))(填充,邊界,周長(zhǎng),面積)(長(zhǎng)度)3.1.3面向?qū)ο蟮能浖_(kāi)發(fā)過(guò)程
面向?qū)ο蟮能浖_(kāi)發(fā)過(guò)程可以大體劃分為三個(gè)階段:面向?qū)ο蟮姆治觯╫bjectorientedanalysis,OOA)面向?qū)ο蟮脑O(shè)計(jì)(objectorienteddesign,OOD)面向?qū)ο蟮膶?shí)現(xiàn)(objectorientedprogramming,OOP)。(1)面向?qū)ο蟮姆治觯∣OA——
objectorientedanalysis)主要作用:明確用戶的需求,并用標(biāo)準(zhǔn)化的面向?qū)ο蟮哪P鸵?guī)范地表述這一需求,最后將形成面向?qū)ο蟮姆治瞿P停碠OA模型。分析階段的工作應(yīng)該由用戶和開(kāi)發(fā)人員共同協(xié)作完成。面向?qū)ο蟮姆治鍪紫葢?yīng)該明確用戶的需求,然后再將這些需求以標(biāo)準(zhǔn)化模型的形式規(guī)范地表述出來(lái),即將用戶和開(kāi)發(fā)人員頭腦中形成的需求以準(zhǔn)確的文字、圖表等形式表述出來(lái),形成雙方都認(rèn)可的文件。使用OOA的原因如下:(1)它使我們能在人類概括客觀事物的三個(gè)基本方法(對(duì)象及屬性、一般—特殊結(jié)構(gòu)和部分—整體結(jié)構(gòu))的框架上進(jìn)行定義和交流。(2)它首先著眼于問(wèn)題空間的理解。(3)它將屬性及專用于那些屬性的方法視為一個(gè)固有的整體。(4)使用自包含分塊(對(duì)象之間依賴性最小)進(jìn)行分析和說(shuō)明。(5)它提供一個(gè)支持分析和設(shè)計(jì)一致的強(qiáng)有力的表示工具。(6)它能適應(yīng)系列變化的系統(tǒng)和對(duì)當(dāng)前實(shí)際運(yùn)行系統(tǒng)的調(diào)整。常使用的OO(描述)方法有多種:BoochBooth方法(86年)Coad&yourdon方法(90年)JamesRumbaugh(OMT)方法(91年)Berard方法FireSmith方法Jacobson(OOSE)方法Martin-Odeu方法Seidewitz-Stark方法Shlaer-Mellor方法Wirfs-Brook方法UML(UnifiedModelingLanguage)方法Coad&Yourdon的OOA模型的5個(gè)層次對(duì)象—類層:找到要開(kāi)發(fā)的應(yīng)用軟件所對(duì)應(yīng)的各個(gè)現(xiàn)實(shí)世界的實(shí)體,并從中抽象出類和對(duì)象。靜態(tài)屬性層:為對(duì)象—類層中抽取出來(lái)的各個(gè)類和對(duì)象設(shè)計(jì)靜態(tài)屬性和它們之間的約束關(guān)系。服務(wù)層:定義對(duì)象和類的動(dòng)態(tài)屬性以及對(duì)象之間的消息通信。結(jié)構(gòu)層:定義系統(tǒng)中所有對(duì)象和類之間的層次結(jié)構(gòu)關(guān)系。主題層:將系統(tǒng)定義為若干主題(即子系統(tǒng)),把有關(guān)對(duì)象劃歸不同的主題。
從面向?qū)ο蟮姆治龅矫嫦驅(qū)ο蟮脑O(shè)計(jì)
OOA的各層模型化了“問(wèn)題空間”,而作為OOA各層擴(kuò)充的OOD,則模型化一個(gè)特定的“實(shí)現(xiàn)空間”。這種擴(kuò)充主要是從增加屬性和方法開(kāi)始的。
OOA是獨(dú)立于程序設(shè)計(jì)語(yǔ)言的,初步的OOD在很大程度上依然獨(dú)立于程序設(shè)計(jì)語(yǔ)言,而詳細(xì)OOD是依賴于語(yǔ)言的,并可有效地應(yīng)用過(guò)程式、函數(shù)式和面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言加以實(shí)現(xiàn)。語(yǔ)言的選擇對(duì)OOD的實(shí)施有重要的影響,但不會(huì)影響OOD的有效性。(2)面向?qū)ο蟮脑O(shè)計(jì)(OOD——
objectorienteddesign)概要設(shè)計(jì)——構(gòu)成最初的OOD模型
OOA模型界面管理:負(fù)責(zé)整個(gè)系統(tǒng)的人機(jī)交互界面的設(shè)計(jì)任務(wù)管理:負(fù)責(zé)處理并行操作之類的系統(tǒng)資源管理功能數(shù)據(jù)管理:負(fù)責(zé)設(shè)計(jì)系統(tǒng)與數(shù)據(jù)庫(kù)的接口詳細(xì)設(shè)計(jì)——對(duì)OOD模型進(jìn)行細(xì)化細(xì)化分析:是否有可以直接引用的已有類或部件細(xì)化設(shè)計(jì):設(shè)計(jì)類,包括類的屬性和類之間的相互關(guān)系細(xì)化驗(yàn)證:驗(yàn)證各對(duì)象類公式間是否相容和一致、類成員的訪問(wèn)權(quán)限設(shè)置是否合理、對(duì)象類的功能是否符合用戶要求等。(3)面向?qū)ο蟮膶?shí)現(xiàn)(OOP——
objectorientedprogramming)選擇一種合適的面向?qū)ο蟮木幊陶Z(yǔ)言用選定的語(yǔ)言編碼實(shí)現(xiàn)對(duì)軟件系統(tǒng)中各對(duì)象類的詳盡描述將編寫(xiě)好的各個(gè)類代碼模塊根據(jù)類的相互關(guān)系集成起來(lái)利用開(kāi)發(fā)人員提供的測(cè)試樣例和用戶提供的測(cè)試樣例分別檢驗(yàn)編碼完成的各個(gè)模塊和整個(gè)軟件系統(tǒng)。面向?qū)ο蟮能浖_(kāi)發(fā)過(guò)程小結(jié)分析用戶需求,從問(wèn)題中抽取對(duì)象模型;將模型細(xì)化,設(shè)計(jì)類,包括類的屬性和類之間的相互關(guān)系,同時(shí)考察是否有可以直接引用的已有類或部件;選定一種面向?qū)ο蟮木幊陶Z(yǔ)言,具體編碼實(shí)現(xiàn)上一階段類的設(shè)計(jì),并在開(kāi)發(fā)過(guò)程中引入測(cè)試,完善整個(gè)解決方案。3.1.4面向?qū)ο蟪绦蛟O(shè)計(jì)的四個(gè)特點(diǎn)抽象性指采用數(shù)據(jù)抽象的方法來(lái)構(gòu)建程序的類、對(duì)象和方法,即把系統(tǒng)中需要處理的數(shù)據(jù)和這些數(shù)據(jù)上的操作結(jié)合在一起,根據(jù)功能、性質(zhì)、作用等因素抽象成不同的抽象數(shù)據(jù)類型。封裝性指利用類將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護(hù)在類的內(nèi)部,系統(tǒng)的其他部分只有通過(guò)包裹在數(shù)據(jù)外面的被授權(quán)的操作,才能與這個(gè)類進(jìn)行交流和交互。繼承性指一個(gè)類可以從其它已有的類中派生,新類保持了父類中的行為和屬性,但增加了新的功能。多態(tài)性
指一個(gè)程序中可以有同名的不同方法共存的情況??梢岳米宇悓?duì)父類方法的覆蓋和重載在同一個(gè)類中定義多個(gè)同名的方法來(lái)實(shí)現(xiàn)。3.1.5面向?qū)ο蟪绦蛟O(shè)計(jì)的三大優(yōu)點(diǎn)可重用性指在一個(gè)軟件項(xiàng)目中所開(kāi)發(fā)的模塊,不僅可以用于本項(xiàng)目,還可以重復(fù)地使用在其他項(xiàng)目中。提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期,降低了開(kāi)發(fā)成本。由于采用了正確、有效的模塊,質(zhì)量得到保證,維護(hù)工作量減少。采用可重用模塊來(lái)構(gòu)建程序,提高了程序的標(biāo)準(zhǔn)化程度,符合現(xiàn)代大規(guī)模軟件開(kāi)發(fā)的需求。
可管理性采用類作為構(gòu)建系統(tǒng)的部件,使整個(gè)項(xiàng)目的組織更加合理、方便;把數(shù)據(jù)和其上的操作封裝在一起,僅本類的方法才可以操縱、改變這些數(shù)據(jù),效率提高,開(kāi)發(fā)難度降低;指應(yīng)用軟件能夠很方便地進(jìn)行修改和擴(kuò)充,包括軟件的內(nèi)容、形式和工作機(jī)制(如把C/S模式改為B/S模式)的修改和擴(kuò)充。特別適合于使用在快速原型的軟件開(kāi)發(fā)方法中。
使系統(tǒng)維護(hù)(包括延伸開(kāi)發(fā))變得簡(jiǎn)單和容易,維護(hù)工作量和開(kāi)銷(xiāo)大大降低。對(duì)模塊化技術(shù)的更有效的支持。
可擴(kuò)展性再回首:Java關(guān)鍵字?jǐn)?shù)據(jù)類型:bytebooleanchardouble
floatintlong
short,特殊的值:falsetruevoidnulllength程序流程控制:ifelse
、
switch
case、breakdefault、do–while、for、continue、return類的定義:class
extendsimplements
importinterfacepackagesuperthis非訪問(wèn)控制符:abstractfinalstaticnative特殊運(yùn)算符:instanceofnew
訪問(wèn)控制符:publicprivateprotected異常處理:trycatchfinallythrowthrows
線程:threadtransientsynchronized3.2Java的類類由數(shù)據(jù)和方法構(gòu)成,是Java編程的基礎(chǔ)。類既要提供與外部聯(lián)系的接口,同時(shí)又要盡可能隱藏類的實(shí)現(xiàn)細(xì)節(jié)。類屬性(數(shù)據(jù))方法(操作數(shù)據(jù))3.2.1類的定義[修飾符]class
類名[extends
父類][implements
接口名]{
成員變量聲明 //域(屬性)的聲明
方法聲明 }publicabstractfinal接口名父類修飾符定義類屬性,成員變量定義類方法(1)聲明類頭:關(guān)鍵字class父類名:跟在extends關(guān)鍵字后,用以說(shuō)明當(dāng)前類是已經(jīng)存在的哪個(gè)類的子類。通過(guò)定義繼承關(guān)系,子類可以獲得父類的所有屬性和方法,并進(jìn)一步定義它自己的特殊屬性.接口名:跟在implements關(guān)鍵字后,用以說(shuō)明當(dāng)前類中實(shí)現(xiàn)了哪個(gè)接口定義的功能和方法。修飾符:說(shuō)明類的特殊性質(zhì),分為訪問(wèn)控制符、抽象說(shuō)明類和最終類說(shuō)明符。
(2)聲明類體:
定義類的具體內(nèi)容,包括類的屬性與方法
[類的屬性]:可以是簡(jiǎn)單變量,也可以是對(duì)象、數(shù)組等其他復(fù)雜數(shù)據(jù)結(jié)構(gòu)。聲明類屬性為簡(jiǎn)單變量的語(yǔ)法:
[修飾符]變量類型變量名[=變量初值];例:intpassword;聲明類屬性為對(duì)象的語(yǔ)法:[修飾符]類名對(duì)象名[=new類名(實(shí)際參數(shù)列表)];例:PhoneCardmyCard=newPhoneCard();
修飾符有訪問(wèn)控制符、靜態(tài)修飾符static、最終修飾符final、易失修飾符volatile和過(guò)渡修飾符transient。[類的方法]:
即成員函數(shù),它規(guī)定類屬性上的操作,實(shí)現(xiàn)類的內(nèi)部功能的機(jī)制,是類與外部交互的窗口。語(yǔ)法結(jié)構(gòu):[修飾符]返回值類型
方法名(參數(shù)列表)throws
例外名1,例外名2,...{
方法體;
局部變量聲明;
語(yǔ)句序列;}
課堂練習(xí):1.編寫(xiě)一個(gè)車(chē)輛類,其中包括2個(gè)域:車(chē)輛類別、輪胎數(shù)量,2個(gè)成員方法:分別用來(lái)設(shè)置車(chē)輛類別和輪胎數(shù)量。2.編寫(xiě)一個(gè)JavaApplication程序,實(shí)現(xiàn)車(chē)輛對(duì)象的創(chuàng)建,并調(diào)用其成員方法將所創(chuàng)建車(chē)輛的“車(chē)輛類別”設(shè)置為“長(zhǎng)公交”、輪胎數(shù)量設(shè)置為6,要求通過(guò)字符界面輸出所創(chuàng)建與設(shè)置的結(jié)果。3.2.2類中的“變量”概念辨析:(1)成員變量:在類體變量定義處定義的變量,在整個(gè)類內(nèi)都有效;成員變量包括實(shí)例變量和類變量,用static定義的變量是類變量,也叫靜態(tài)變量;所有對(duì)象獨(dú)享實(shí)例變量,但共享類變量;實(shí)例變量只能通過(guò)對(duì)象名訪問(wèn),類變量既可以通過(guò)某個(gè)對(duì)象名也可以通過(guò)類名來(lái)訪問(wèn)。(2)局部變量:在類的方法中定義的變量,僅在定義它的方法內(nèi)有效3.2.3類中的“方法”概念辨析:(1)實(shí)例方法:實(shí)例方法既可以操作實(shí)例變量,也可以操作類變量;實(shí)例方法在創(chuàng)建類對(duì)象后才分配入口地址;實(shí)例方法可以被類創(chuàng)建的任何對(duì)象訪問(wèn),必須通過(guò)對(duì)象來(lái)調(diào)用;實(shí)例方法可以調(diào)用其它方法(包括類方法)。(2)類方法:
用static修飾的方法是類方法,也叫靜態(tài)方法;
類方法只能操作類變量;類方法在類被加載到內(nèi)存后就分配了入口地址;類方法可以被類創(chuàng)建的任何對(duì)象調(diào)用,也可以通過(guò)類名來(lái)調(diào)用,類方法只能調(diào)用該類的類方法。本類中方法與變量之間的訪問(wèn)關(guān)系
實(shí)例方法類方法實(shí)例變量類變量用對(duì)象名√√√√用類名
√
√各類之間方法與屬性的引用方法
實(shí)例方法類方法實(shí)例變量類變量局部變量實(shí)例方法√√√√√類方法
√
√√3.3構(gòu)造方法與對(duì)象創(chuàng)建3.3.1構(gòu)造方法的基本概念構(gòu)造方法:用來(lái)初始化對(duì)象(為其所有屬性賦初值)的一個(gè)特殊方法。(也稱構(gòu)造函數(shù))構(gòu)造方法名與類名相同構(gòu)造方法可以有0個(gè)或多個(gè)參數(shù)特點(diǎn)構(gòu)造方法始終和new關(guān)鍵字一起調(diào)用構(gòu)造方法沒(méi)有返回值在創(chuàng)建一個(gè)類的新對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用構(gòu)造方法對(duì)其進(jìn)行初始化。引入構(gòu)造方法的原因:1)滿足面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象初始化的需要;2)提高靈活度,使初始化工作除賦值外有更復(fù)雜的操作;
在不定義構(gòu)造方法時(shí),系統(tǒng)會(huì)自動(dòng)為該類生成一個(gè)默認(rèn)(缺?。┑臉?gòu)造方法。缺省構(gòu)造類中可以不出現(xiàn)構(gòu)造方法,如果沒(méi)有構(gòu)造方法,系統(tǒng)將為該類缺省定義一個(gè)空構(gòu)造方法,也稱為缺省構(gòu)造方法。用缺省構(gòu)造方法初始化對(duì)象時(shí),系統(tǒng)用缺省值初始化類對(duì)象的數(shù)據(jù)成員。
各數(shù)據(jù)類型的缺省值如下:數(shù)值型:0布爾型:false字符型:’\0’
類:null3.3.2構(gòu)造方法的定義例如,可以為Student類定義如下的構(gòu)造方法,初始化它的2個(gè)域:
注意:構(gòu)造方法定義了幾個(gè)形式參數(shù),創(chuàng)建對(duì)象的語(yǔ)句在調(diào)用構(gòu)造方法時(shí),需要提供幾個(gè)類型、順序一致的實(shí)際參數(shù),指明新建對(duì)象各域的初始值。
Student(Stringm,Strings) { name=m; sex=s; }publicclassTestStudent{publicstaticvoidmain(Stringargs[]){Students1=newStudent(“張華”,“軟131”);Students2=newStudent(“丁一”,“軟132”);
System.out.println(s1.stuName);
System.out.println(s1.stuClass);
System.out.println(s2.stuNam);}}classStudent{ StringstuName; StringstuClass;
Student(Stringm,Strings) { stuName=m; stuClass=s; }}對(duì)象的使用可以用點(diǎn)(.)操作符來(lái)調(diào)用對(duì)象實(shí)例的成員變量和方法
(1)域的引用
成員變量引用的形式如下:對(duì)象名.variablename
例如可以通過(guò)賦值語(yǔ)句修改firstP的值。
firstP=“Henry”;
(2)方法的調(diào)用對(duì)象的方法調(diào)用的一般形式如下:對(duì)象名.方法名(參數(shù)列表)例如:firstPerson.setAge(30);實(shí)參實(shí)參classDemo.javapublicclassClassDemo{inta;intb;
ClassDemo()
{a=2;b=3;}
voidshow(){ System.out.println(“a=”+a+”,b=”+b);}
publicstaticvoidmain(Stringargs[])
{newClassDemo().show();}}
成員變量
成員方法classPerson{
Stringname;//姓名
intsex;//性別
int
age;//年齡
Person(Strings1){ name=s1;
}
StringgetName(){
returnname;}voidsetAge(int
d){
age=d;}}
Person類namesexagePerson()構(gòu)造方法getName()setAge(
)3.3.3創(chuàng)建類的實(shí)例對(duì)象創(chuàng)建對(duì)象的一般格式:類名
新建對(duì)象名=new
構(gòu)造函數(shù)();
new是為新建對(duì)象開(kāi)辟內(nèi)存空間的算符。構(gòu)造函數(shù)()用來(lái)完成對(duì)象的初始化。如:TextFieldinput=newTextField(6);
建立一個(gè)名為input、長(zhǎng)度為6的文本框。
Personp1=newPerson(“張三”);
建立一個(gè)名為“張三”的人p1。3.4定義和使用Java的方法3.4.1方法的定義Java中,方法只能在類中定義,由方法頭和方法體兩部分組成。格式:[修飾符]
返回值類型
方法名([參數(shù)列表])throws例外名1,例外名2,...{
局部變量/對(duì)象聲明部分;
語(yǔ)句部分;}方法定義舉例例如:定義計(jì)算平方值的方法intsquare(intx)
{
ints;
s=x*x;
returns;
}
int是方法返回值類型,square是方法的名字;x是方法的形式參數(shù),s是方法體內(nèi)的局部變量。方法聲明中的修飾符的含義:
[public|protected|private]
[static][final|abstract][native][synchronized]
static:
靜態(tài)方法(類方法),可通過(guò)類名直接調(diào)用
abstract:
抽象方法,沒(méi)有方法體
final:
方法不能被重寫(xiě)
native:
集成其它語(yǔ)言的代碼
synchronized:
控制多個(gè)并發(fā)線程的訪問(wèn)
例:
public
staticvoid
main(String
args[])
{}//主類方法3.4.2方法的參數(shù)方法頭定義時(shí)所帶的參數(shù)稱為形參,它規(guī)定了方法的輸入數(shù)據(jù),調(diào)用時(shí)所帶的參數(shù)稱為實(shí)參。帶多個(gè)參數(shù)時(shí),要指明各參數(shù)的類型,并用逗號(hào)把各參數(shù)分隔開(kāi)來(lái)?!靶螌?shí)結(jié)合”時(shí)是按位置順序一一對(duì)應(yīng)的,否則會(huì)引發(fā)編譯錯(cuò)誤。多個(gè)同名方法通過(guò)所帶參數(shù)不同(包括:順序、類型、個(gè)數(shù))而實(shí)現(xiàn)多態(tài)。參數(shù)傳遞示例值傳遞⑴
值傳遞調(diào)用方法時(shí),參數(shù)是普通變量,實(shí)參將其值傳給形參,調(diào)用中實(shí)參的值不受形參的影響。
⑵引用傳遞調(diào)用方法時(shí),參數(shù)的類型為復(fù)合數(shù)據(jù)類型,如:數(shù)組、類。實(shí)參隨形參的變化而變化。參數(shù)傳遞方式分類:3.4.3方法的返回值方法的返回值是方法的輸出數(shù)據(jù)。定義方法頭時(shí),通過(guò)定義方法返回值類型說(shuō)明該方法的輸出數(shù)據(jù)類型,用return語(yǔ)句返回確定數(shù)值。方法無(wú)返回值時(shí),返回值類型應(yīng)為void。格式:return表達(dá)式;例:類的定義publicclassTestClass{ staticints;//定義在此處才可以兩個(gè)方法都用
publicstaticvoidmain(Stringargs[]) { System.out.println("面積是:"+square(5)+""+s);//可以用兩種方法引用返回值
} staticintsquare(intx) {
//ints;
//在此處定義的話,main方法中則不能引用
s=x*x;returns; }}3.4.4方法的使用程序調(diào)用方法:
大部分用戶自定義的方法都屬于程序調(diào)用方法。調(diào)用命令通過(guò)被調(diào)用方法的名稱來(lái)說(shuō)明要使用哪個(gè)自定義的方法,完成“形實(shí)結(jié)合”,為被調(diào)用方法的各形式參數(shù)賦初值。如:x=isPrime(i);
當(dāng)有多個(gè)同名方法時(shí),根據(jù)參數(shù)列表來(lái)區(qū)分。(2)系統(tǒng)調(diào)用方法:
其最大特點(diǎn)是方法定義后,不需要寫(xiě)專門(mén)的調(diào)用命令,系統(tǒng)會(huì)在程序運(yùn)行過(guò)程中自動(dòng)去調(diào)用此方法才完成它所定義的任務(wù)。如:init()3.4.5定義方法的步驟和注意事項(xiàng)(1)算法中需要細(xì)化的步驟、程序中重復(fù)的代碼以及重載父類方法都可以定義成類的方法。(2)方法通常具有相對(duì)獨(dú)立的功能和明確的輸入輸出接口。(3)定義方法分定義方法頭和方法體兩部分。(4)方法頭包括方法名、參數(shù)列表、返回值類型、方法修飾和方法拋出的例外列表。重載方法的方法頭要與其父類方法的方法頭基本一致。(5)方法命名要遵循Java對(duì)標(biāo)識(shí)符的規(guī)定:以字母、$或-開(kāi)頭,由字母、數(shù)字組成。
(6)參數(shù)列表是方法的輸入接口,它列
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)付款資產(chǎn)轉(zhuǎn)讓
- 質(zhì)量問(wèn)題先行賠付
- 混凝土供應(yīng)協(xié)議
- 財(cái)務(wù)咨詢服務(wù)協(xié)議樣本
- 服務(wù)改進(jìn)方案合同
- 校園印刷購(gòu)銷(xiāo)合同
- 鴨毛購(gòu)銷(xiāo)合同
- 誠(chéng)信為本杜絕曠工
- 嚴(yán)守校規(guī)我的承諾
- 井位建設(shè)合同范本
- Q2起重機(jī)司機(jī)實(shí)際操作技能考核作業(yè)指導(dǎo)書(shū)
- GB/T 37067-2018退化草地修復(fù)技術(shù)規(guī)范
- GB/T 23280-2009開(kāi)式壓力機(jī)精度
- GB/T 19466.1-2004塑料差示掃描量熱法(DSC)第1部分:通則
- 長(zhǎng)方體和正方體的實(shí)踐運(yùn)用
- 第六課 掌握演繹推理方法課件 【備課精講精研】 高中政治統(tǒng)編版選擇性必修三邏輯與思維
- 綜合管廊工程施工技術(shù)概述課件
- 《我的心兒怦怦跳》優(yōu)秀課件
- 公積金提取單身聲明
- 大型設(shè)備的吊裝技術(shù)課件
- 臨床醫(yī)學(xué)概論知識(shí)點(diǎn)匯總
評(píng)論
0/150
提交評(píng)論