版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
面向?qū)ο蟮暮诵奶匦猿绦蛟O計實用教程(第2版)》第一頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.1面向?qū)ο蟪绦蛟O計概述第二頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.1.1面向?qū)ο笮g(shù)語的解釋1.對象什么是對象:現(xiàn)實世界中解決問題的實物(包括有行為和屬性)例如:咖啡貓黃色的(屬性)愛睡覺(行為)2.類什么是類:對象的模板模板內(nèi)容=類的特性(屬性)+行為(方法)
類的成員例如:貓類(有顏色,貓齡等屬性;有睡覺,吃食等行為。第三頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.1面向?qū)ο蟪绦蛟O計概述類與對象關(guān)系概念:類(class)是既包括數(shù)據(jù)又包括作用于數(shù)據(jù)的一組操作的封裝體。對象(object)是類的實例(instance)。類對象抽象實例化方法數(shù)據(jù)或變量第四頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.繼承什么叫繼承?繼承是接收來自父輩的財產(chǎn)在面向?qū)ο笾欣^承的外延是什么?擁有父輩所擁有的東西
子類的繼承→子類擁有父輩的成員例如:汽車繼承車
//所有種類的汽車都需要實現(xiàn)汽車的基本功能類的繼承實現(xiàn)了代碼的重用。第五頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》4.接口接口像一個類定義的模板,它提供了與其他事物之間相互通信的規(guī)則條目,但并非具體實現(xiàn)。例如:多個程序員開發(fā)同一個應用程序的不同類,約定不同類之間使用同一組方法進行通信。則創(chuàng)建一個接口用于定義這些方法。第六頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》5.封裝數(shù)據(jù)隱藏。成員的詳細信息對于對象外的代碼是私有的和不可見的。數(shù)據(jù)方法外界訪問第七頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.1.2面向?qū)ο蟪绦蛟O計方法的優(yōu)點1.可重用性2.可擴展性3.易于管理和維護
第八頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.2面向?qū)ο笈cUML建模建模是一項經(jīng)過檢驗并被廣為接受的工程技術(shù)。建立房屋和大廈的建筑模型,能幫助用戶得到實際建筑物的印象。要生產(chǎn)合格的軟件就要有一套關(guān)于體系的結(jié)構(gòu)、過程和工具的規(guī)范。建模的目的:1.有助于按照實際情況或按照所需的樣式使系統(tǒng)可視化2.能夠規(guī)約系統(tǒng)的結(jié)構(gòu)或行為3.給出指導系統(tǒng)構(gòu)造的模板4.使做出的決策文檔化第九頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.2.2UML建模語言什么是UML?——UnifiedModelingLanguage(統(tǒng)一建模語言)UML是一種用來創(chuàng)建程序模型的圖形語言(即帶有語意的一種圖形記號)??梢杂脕碚f明代碼中對象之間的關(guān)系。第十頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.2.3UML進行面向?qū)ο蟮南到y(tǒng)分析設計UML進行面向?qū)ο蟮南到y(tǒng)分析設計,其過程通常由以下3個部份組成。識別系統(tǒng)的用例和角色進行系統(tǒng)分析,并抽取類系統(tǒng)設計,并設計類及其行為第十一頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.3Java語言與面向?qū)ο筇匦訨ava中的類:信息以類為單位單獨封裝Java中的封裝:無需關(guān)心調(diào)用對象的內(nèi)部細節(jié)Java中的繼承:只準繼承一個類,但可以“繼承”多個接口。Java中的多態(tài)Java中的垃圾回收機制:自動回收垃圾內(nèi)存第十二頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》類的封裝性、繼承性和多態(tài)性類的封裝性類的繼承性類的多態(tài)性數(shù)據(jù)操作成員變量成員方法類類的封裝性直接訪問——訪問權(quán)限類的繼承性類的多態(tài)性外部直接訪問第十三頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》
類的繼承性繼承的概念:子類擁有父類的成員。特性:1.子類自動擁有父類全部成員(成員變量+方法)
人類(父)學生類(子)性別、姓名、身高、國籍……吃飯、睡覺、工作…….性別、姓名、身高、國籍……吃飯、睡覺、工作…….繼承第十四頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》2.子類可以更改父類繼承的成員;如學生類中,“工作”方法會有自己的限制。3.子類可以增加自己的成員;如學生類中,添加“學習”、“考試”等方法。4.子類不能刪除父類任何成員。第十五頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》Java的單繼承C++java父類1父類n子類父類子類接口多繼承:一個類有多個直接父類??梢該碛卸鄠€父類的屬性或方法。單繼承:一個類只有一個直接父類,若需要繼承其他方法,則通過接口實現(xiàn)。注意:java中只支持單繼承。即子類只有一個直接父類。多繼承特點通過接口實現(xiàn)。第十六頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》類的多態(tài)性多態(tài):允許擁有相同的形式,但在不同情況下?lián)碛胁煌瑱C能的特性。如“+”多態(tài)性——方法執(zhí)行的多樣性重載:方法名同,參數(shù)列表不同覆蓋:子類重寫了父類中同名的方法。第十七頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.4類的定義和對象的創(chuàng)建程序運行可理解為做三件事:建立對象使用對象:對象之間傳遞消息,程序處理消息作出響應運行完畢收回對象所占空間。對象的生命周期:創(chuàng)建——運行——消亡獲得內(nèi)存空間進行各種操作使用完釋放內(nèi)存第十八頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.4.1定義類:類聲明+類主體類定義的格式:類聲明{
成員變量的聲明;
成員方法的聲明及實現(xiàn);}類主體類注意與c++有何區(qū)別?。∽兞颗c方法的聲明與定義均不允許放在類主體外面?。?!class類名
{代碼;
}數(shù)據(jù)方法第十九頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》聲明類:權(quán)限特性名字語法:[修飾符]class
類[extends父類]
[implements接口列表]類的修飾符用來說明類的特殊性質(zhì)。分為三種:訪問控制符:public(公共類)、friendly(缺省類)protected(保護類)、private(私有類)-多見于內(nèi)嵌類)抽象類說明符:abstract最終類說明符:final關(guān)鍵字類名表示繼承哪個父類表示繼承哪些接口第二十頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》例:聲明一個公共類Data1:
publicclassData1
定義一個公共類人類:定義一個類學生類:publicclassMan{}classStudent{}第二十一頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.4.2類之間的關(guān)系USES-A關(guān)系HAS-A關(guān)系IS-A關(guān)系第二十二頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》1.USES-A關(guān)系
類A的方法操縱了類B(對象)的成員,則稱之為類A”USES-A”(用到了)類B.例3-1轎車類(Car)其他類(Sample3_1)調(diào)用USES-A關(guān)系PublicclassSample3_1{…c.startIsEnough();…}第二十三頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》2.HAS-A關(guān)系HAS-A關(guān)系是一種擁有關(guān)系,若類A中有B類型的成員引用變量,則類A“HAS-A”
(擁有)類B.例3-2c.getTyreInfo().getMaterial();轎車類(Car)輪胎類(Tyre)擁有HAS-A關(guān)系第二十四頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.IS-A關(guān)系在面向?qū)ο笾小癐S-A”的概念是基于繼承的,旨在表達一個類是另一個類的子類。也就是說,若類A是類B子類的一種,則可以說類A“IS-A”(是一種)類B。例如:“蘋果”是“水果”的種類classFruit{…public
voidcanEat(){…}
}classApple{
…}Applea=newApple()a.canEat();水果蘋果繼承IS-A關(guān)系第二十五頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.4.3構(gòu)造函數(shù)
要使用對象,首先必須構(gòu)造它們,并指定它們的初始狀態(tài),然后將方法應用于對象。在Java程序設計語言中,使用構(gòu)造函數(shù)來構(gòu)造新的實例,作用是構(gòu)造并初始化對象。
第二十六頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》構(gòu)造函數(shù)的創(chuàng)建創(chuàng)建無參構(gòu)造函數(shù)例3-3創(chuàng)建帶參構(gòu)造函數(shù)例3-4第二十七頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》構(gòu)造函數(shù)的特點有:(1)構(gòu)造函數(shù)的方法名與類名相同。(2)構(gòu)造函數(shù)沒有返回類型,也無需聲明類型。(3)構(gòu)造函數(shù)的主要作用是完成對類對象的初始化工作,并傳遞參數(shù)。(4)構(gòu)造函數(shù)不能由編程人員顯式地直接調(diào)用。由系統(tǒng)調(diào)用。(5)一個類可以定義多個構(gòu)造方法,缺省構(gòu)造函數(shù)為無參的默認構(gòu)造函數(shù),不執(zhí)行任何代碼。(6)構(gòu)造方法可以重載,以參數(shù)的個數(shù)、類型或排列順序區(qū)分。第二十八頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.3.4類成員聲明成員變量[修飾符][static][final][transient]數(shù)據(jù)類型
變量名訪問控制符:public(公共類)friendly(缺省類)protected(保護類)
private(私有類)類(靜態(tài))成員變量常量臨時變量類聲明{成員變量的聲明;
成員方法的聲明及實現(xiàn);}第二十九頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》例3-5:定義Student類,聲明3個成員變量分別表示姓名、年齡、班級:publicclassStudent //類聲明{publicStringstuName;publicintstuAge;publicStringstuClass;}成員變量的引用//聲明成員變量第三十頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》2.成員變量的初始值創(chuàng)建對象后,如果對象有成員變量,則系統(tǒng)會自動為其分配一個初始值。例3-6例3-7注意:對象引用型成員變量,其初始值為“null”,表示此引用沒有指向任何對象。第三十一頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.4.5對象的創(chuàng)建聲明對象類名對象例:Students;對象實例化對象=new類的構(gòu)造方法([參數(shù)列表])s=newStudent();引用對象的成員變量及方法:用“.”運算符對象.成員變量對象.成員方法([參數(shù)列表])=王強;
//引用對象的成員變量Student第三十二頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.5方法方法的定義方法的基本組成:方法的聲明+方法體[修飾符][static]返回值類型
方法([參數(shù)列表])[throws異常類]{
語句序列;[return[返回值]];}方法聲明:方法體:第三十三頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》
例:intsub(inta,intb){returna-b;}intsub(inta,intb){intc;c=a-b;returnc;}第三十四頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》說明:1.參數(shù)序列指定要傳遞給方法什么樣的信息(1)可以是java中的任何類型,包括基本數(shù)據(jù)參數(shù)類型、對象引用類型。(2)每個參數(shù)必須包括類型與變量標識符,若有多個參數(shù),則用逗號將其分隔。如(inta,intb)第三十五頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》2.方法體方法體是該方法具體業(yè)務代碼的實現(xiàn)。return語句負責方法的返回。3.返回值類型返回值類型指定了該方法返回結(jié)果的類型??梢允腔緮?shù)據(jù)類型或?qū)ο笠妙愋停瑳]有返回值也要使用void關(guān)鍵字。第三十六頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》返回值規(guī)則:可以在具有對象引用返回類型的方法中返回null,但基本數(shù)據(jù)類型作為返回類型則不可以返回null。對象給也是完全合法的返回值類型,如數(shù)組。在具有基本數(shù)據(jù)返回類型的方法內(nèi),可以返回任何值,只要其能夠自動轉(zhuǎn)換返回值類型。如返回值為double,返回整數(shù)4是可以的。但返回值為int時,返回一個浮點數(shù)12.43則報錯。一定不能在具有void返回類型的方法中返回任何內(nèi)容。在具有對象引用返回類型的方法內(nèi),可以返回任何類型的對象引用,只要返回的引用與返回類型相同或可自動轉(zhuǎn)換為返回類型即可。第三十七頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.5.2方法重載概念:同一個類中多個方法有相同的名字,不同的參數(shù)列表,這種情況稱為方法重載。如:publicdoublechangeSize(intsize,Stringname,floatpattern)publicvoidchangeSize(intsize,Stringname)privateintchangeSize(intsize,floatpattern)voidchangeSize(floatpattern,Stringname)?方法返回類型不同,參數(shù)相同,算不算重載?注意:返回類型不同并不足以構(gòu)成方法重載。當重載方法被調(diào)用時,編譯器根據(jù)參數(shù)的類型和數(shù)量來確定實際調(diào)用哪個重載方法的版本。例3-8第三十八頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》
方法調(diào)用進行匹配的時候,首先選擇直接匹配的方法,如果沒有,則將參數(shù)進行提升轉(zhuǎn)換后再匹配方法,總是匹配最接近的方法。基本類型則按照基本數(shù)據(jù)類型間的自動轉(zhuǎn)換關(guān)系;引用類型則尋找最能兼容傳遞的參數(shù)。例3-9多匹配選擇示例例3-10第三十九頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.5.3遞歸
遞歸方法就是自調(diào)用方法,在方法體內(nèi)直接或間接地調(diào)用自己。有兩種方式:1.直接遞歸2.間接遞歸第四十頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》直接遞歸:即在方法體內(nèi)調(diào)用方法本身。例:求斐波那數(shù)列第n項斐波那數(shù)列:f(0)=f(1)=1f(n)=f(n-1)+f(n-2)(n>1)例3-11第四十一頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》間接遞歸:函數(shù)中調(diào)用其他函數(shù),其他函數(shù)又調(diào)用本函數(shù)。例3-12第四十二頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.6靜態(tài)成員靜態(tài)修飾符——static,修飾類中的靜態(tài)屬性和方法(1)靜態(tài)屬性——被static修飾的屬性稱為靜態(tài)屬性(類屬性)。特點:它們是類的屬性,而不屬于任何一個類的具體對象。即在一個類中只能有一個這類字段,并且由類調(diào)用,無需引用任何對象。
(2)靜態(tài)方法——被static修飾的方法成為靜態(tài)方法(類方法)。特點:不與任何對象相關(guān)聯(lián)。能夠在它的類的任何對象訪問前輩訪問,即使沒有對象也能調(diào)用該方法。靜態(tài)方法只能調(diào)用靜態(tài)屬性。第四十三頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》例:publicclassStaticDemo{publicstaticStrings=“我是靜態(tài)變量”
publicstaticvoidprintInfo(){System.out.println(“我是靜態(tài)方法”)};
}問?在其他類中如何調(diào)用靜態(tài)變量和方法?例3-13第四十四頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.6.2靜態(tài)變量與常量
在java中,表示常量的方法是通過靜態(tài)成員變量的方式來實現(xiàn)的:如:聲明3個常量X,Y,Z:
publicstaticfinalintX=10;public
staticfinalintY=20;
publicstaticfinalintZ=40;“publicstaticfinal”相當于表示常量的修飾符。公共的,即所有對象都能夠訪問。靜態(tài)的,即無需創(chuàng)建任何對象直接可通過類調(diào)用。最終的,即定義的值為永久的,不能改變。第四十五頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》靜態(tài)屬性的初始化靜態(tài)成員變量的初始化要求在靜態(tài)語句塊結(jié)束之前必須完成。一方面可以在聲明的同時進行初始化,另一方面可以在靜態(tài)語句塊中進行初始化。例3-4第四十六頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.6.3靜態(tài)成員的訪問<類名>.<靜態(tài)成員名>例3-151.靜態(tài)方法訪問非靜態(tài)成員靜態(tài)成員生命周期比非靜態(tài)要長,當訪問靜態(tài)成員時,非靜態(tài)成員不一定存在,因此靜態(tài)方法不能訪問非靜態(tài)屬性。同樣道理,靜態(tài)方法不能使用this預定對象關(guān)鍵字。第四十七頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》例3-16靜態(tài)方法訪問非靜態(tài)成員示例1例3-17靜態(tài)方法訪問非靜態(tài)成員示例2第四十八頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》2.非靜態(tài)方法訪問靜態(tài)成員非靜態(tài)方法產(chǎn)生時,靜態(tài)成員已經(jīng)存在。因此靜態(tài)方法在任何時候都可以訪問靜態(tài)成員。例3-18第四十九頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.6.4main方法Main方法——特殊的靜態(tài)方法,作為程序的入口,由于不對任何對象施加操作(實為執(zhí)行時還無任何對象產(chǎn)生),因此聲明為static;該方法由虛擬機調(diào)用,所以必須為public;而方法不需要返回值,因此聲明為void。聲明:publicstaticvoidmain(Stringargs[])例3-19Main方法規(guī)定有一個類型為String的入?yún)?,取名為args。用于接收命令行輸入的參數(shù)。第五十頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.6.5Factory方法Java的靜態(tài)方法有一種常見的用途,就是使用Factory方法產(chǎn)生不同風格的對象,例如NumberFormat類使用Factory方法產(chǎn)生不同風格的格式對象。FactoryMethod是最常用的模式了,F(xiàn)actory方法在Java程序系統(tǒng)中可以說是隨處可見。Factory方法就相當于創(chuàng)建實例對象的new,我們經(jīng)常要根據(jù)類Class生成實例對象,如Aa=newA(),FactoryMethod也是用來創(chuàng)建實例對象的,所以以后new時可以考慮實用factory模式(工廠模式),雖然這樣做,可能多做一些工作,但會給系統(tǒng)帶來更大的可擴展性和盡量少的修改量。第五十一頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》Factory作用:完成復雜情況下的初始化工作。盡量將長的代碼分派“切割”成每段,將每段再“封裝”起來。這樣就需要將創(chuàng)建實例的工作與使用實例的工作分開,也就是說,讓創(chuàng)建實例所需要的大量初始化工作從構(gòu)造函數(shù)中分離出去。這時我們就需要Factory工廠模式來生成對象了。使用工廠方法要注意幾個角色,首先要定義產(chǎn)品接口,如Fruit,產(chǎn)品接口下有接口的實現(xiàn)類,如Apple,其次要有一個factory類,用來生成產(chǎn)品。例Factory方法實例:例3-20第五十二頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.7包概念:包是一種將相關(guān)類,接口或其他包組織起來的集合體。目的:用來管理類名空間,將包含類代碼的文件組織起來,易于查找和使用,避免同名類發(fā)生沖突。內(nèi)容:類,接口及其他包。說明:包是一種松散的類集合,一般在不要求處于同一個包中的類有明確的相互關(guān)系,但是由于同一包的類在默認情況下可以互相訪問,因此常把需要在一起工作的類放在一個包里。包也稱類庫第五十三頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.7.1包的定義(1)缺省情況下為無名包(2)有名包的創(chuàng)建:使用package語句 如:packagepname;3-13
或packagedir1.dir2.pname;
包就是一個文件夾,里面存放該程序所生成的所有.class文件,包中的“.”號表示子文件夾。默認包中類之間可以相互訪問public,protected或默認訪問權(quán)限的數(shù)據(jù)成員和成員函數(shù)。默認包中的類不能被其他包中的類引用。第五十四頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》package語句必須放在源文件最前面,之前不可以有其他任何語句;每個源文件最多只能有一條package語句。例3-21
將類Sample3_21放至包chapter03的sample3_21中。第五十五頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》JDK環(huán)境下包中類的編譯和運行編譯時:javac運行:d:\java>java –d
CLASSPATH路徑
Myclass.javaCLASSPATH變量指明包存放的位置。例如: javac–dd:\javaSample3_21.java結(jié)果:直接在d:\java下創(chuàng)建在myclass.java指明的包目錄,并把Myclass.class拷到該目錄下。包名.myclass例如: javachapter03.sample3_21.Sample3_21第五十六頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.7.2類的導入(1)加載引用(類短名)——使用import語句 格式:importmypack1.mypack2.Myclass
或importmypack1.mypack2.*注意:1.Import語句必須先于所有類聲明。2.使用(*)只能表示本層次的所有類,而不包括子層次下的類。如importjava.awt.*;importjava.awt.event.*;//上面的語句未包括event 子包中的類3.用(*)一般適用于要用到同個包當中的多個類的情況。第五十七頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》(2)類長名:直接使用包名、類名前綴(用在語句中) 格式:mypack1.mypack2.Myclass例如:java.util.Dated1=new
java.util.Date()
第五十八頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》(3)直接引用:在同一文件夾下(私有類除外)
將無名包中的引用類與被引用類存貯在同一物理空間例如:假如Car和Sample3_3這兩個類在向一個目錄下,你就可以在Sample3_3類中創(chuàng)建一個Car實例,無需導入Car這個類。第五十九頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》注意:java中java.lang包中的類系統(tǒng)是自動引入的,即使不用import語句,每個源文件中系統(tǒng)編譯時都會自動引入java.lang.*中的類。第六十頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》兩種特殊情況需要注意:1.兩個包中有同名類,但只用到其中一個及其他不同名的類,則在import語句中明確給出需要引用的類名。如例3-222.兩個包中有同名類,且都要使用,則直接在語句中指明調(diào)用哪個類。如例3-23第六十一頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.7.3靜態(tài)導入從JavaSE5.0開始,導入語句不但可以導入類,還具有導入靜態(tài)方法和靜態(tài)成員變量的功能,不過需要在關(guān)鍵字“import”和包名之間添加關(guān)鍵字“static”,語法如下。importstatic<包名>.<類名>.*;importstatic<包名>.<類名>.<具體方法/成員變量名>;“*”還是代表通配符,不過這里表示的是指定類下面所有靜態(tài)的方法或成員變量。如果要明確指明要使用的方法或成員變量,用第2行語法。碰到不同類下同名靜態(tài)方法或成員變量時,解決沖突的方法類似上一小節(jié),這里不再贅述。第六十二頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.8成員的訪問控制成員的訪問是指以下兩種不同的操作:一個類中的方法代碼是否能夠調(diào)用(調(diào)用)另一個類中的成員。一個類是否能夠繼承其父類的成員。第六十三頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》
所有類A
所有子類C同包中類B
包中子類E本類Dpublic(公共)類、變量、方法Aprotected(保護)變量、方法BUCdefault(默認)類、變量、方法Bprivate(私有)變量、方法Dprivateprotected(私有保護)變量、方法C訪問控制符:第六十四頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》公共類型:public例3-26私有類型:private例3-27默認類型:default例3-28保護類型:protected第六十五頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》封裝是一個面向?qū)ο蟮男g(shù)語,其含義很簡單,就是把東西包裝起來。換言之,成員變量和方法的定義都包裝于類定義之中,類定義可以看成是將構(gòu)成類的成員變量和方法封裝起來。通過限定類成員的可見性,可以使類成員中的某些屬性和方法能夠不被程序的其他部分訪問,它們被隱藏了起來,只能在定義的類中使用,這就是面向?qū)ο笾袑崿F(xiàn)封裝的方式。3.9封裝成員變量成員方法類直接訪問外部直接訪問第六十六頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》Java中封裝需要遵循的規(guī)則:用訪問限制修飾符保護成員變量,通常是private。建立公有的public訪問方法,強制調(diào)用代碼通過這些方法訪問成員變量,而不是直接調(diào)用。例3-29第六十七頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》分析:width和height成員變量被封裝,必須通過setProerty方法才能訪問,由于在setProerty方法中設置了檢驗值正確性的規(guī)則,所以不可能設置錯誤的width和height值,增加代碼的健壯性。封裝后不但可以提高健壯性,還可以提高靈活性,例如,若因需要將height或width的值改為String類型,如果沒有封裝,代碼一旦修改,則所有調(diào)用該值的代碼都需要更改;而封裝后只需要修改設置成員值的方法,將變化限制在一個較小的范圍內(nèi),使外界無需做任何改變?nèi)阅芾^續(xù)調(diào)用。例3-30第六十八頁,共七十四頁,編輯于2023年,星期二程序設計實用教程(第2版)》3.10利用系統(tǒng)已有的類通過前面幾節(jié)的介紹,讀者已經(jīng)對類的定義及對象的創(chuàng)建與使用有了一定的了解。本節(jié)將介紹Java類庫中提供的幾個常用的處理日期時間的類。通過對這幾個類的介紹,使讀者了解利用系統(tǒng)已有的類的思想。第六十九頁,共七十四頁,編輯于20
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車運輸行業(yè)市場調(diào)研分析報告
- 便攜式取暖器產(chǎn)品供應鏈分析
- 碗碟晾干架項目營銷計劃書
- 紙制筷子套細分市場深度研究報告
- 醫(yī)用或獸醫(yī)用培養(yǎng)細菌用介質(zhì)產(chǎn)品供應鏈分析
- 醫(yī)用減肥茶產(chǎn)品供應鏈分析
- 體育訓練服務行業(yè)相關(guān)項目經(jīng)營管理報告
- 電腦游戲操縱桿用充電器項目運營指導方案
- 物位變送器項目營銷計劃書
- 樂譜架產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 中國民歌介紹課件
- 《望天門山》-優(yōu)質(zhì)課件
- 高中數(shù)學必修一黃岡中學試卷(內(nèi)含答案)
- 學寫一種植物(三年級作文指導)課件
- 加油站安全承諾書
- 豬的呼吸道疾病課件
- (中職) 電子商務基礎(chǔ)(第二版)教案
- 氣溫和氣溫的分布 詳細版課件
- 汽車品牌保時捷課件
- 人教版數(shù)學三年級上冊《分數(shù)的初步認識》課件 (共7張PPT)
- 5000噸每年聚丙烯酰胺工藝流程圖
評論
0/150
提交評論