Java程序設(shè)計(jì)精編教程第5章類與對(duì)象.ppt_第1頁(yè)
Java程序設(shè)計(jì)精編教程第5章類與對(duì)象.ppt_第2頁(yè)
Java程序設(shè)計(jì)精編教程第5章類與對(duì)象.ppt_第3頁(yè)
Java程序設(shè)計(jì)精編教程第5章類與對(duì)象.ppt_第4頁(yè)
Java程序設(shè)計(jì)精編教程第5章類與對(duì)象.ppt_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2010-8-1,1,Java程序設(shè)計(jì)精編教程 第5章,配合例子源代碼一起使用,Power point 制作:耿祥義 張躍平,類與對(duì)象,2010-8-1,2,主要內(nèi)容 面向?qū)ο蟮奶匦?類 構(gòu)造方法與對(duì)象的創(chuàng)建 參數(shù)傳值 對(duì)象的組合 實(shí)例成員與類成員 方法重載與多態(tài) this關(guān)鍵字 包 import語(yǔ)句 訪問(wèn)權(quán)限,導(dǎo)讀,2010-8-1,3,5.1 面向?qū)ο蟮奶匦?面向?qū)ο缶幊讨饕w現(xiàn)下列三個(gè)特性 封裝性 繼承 多態(tài),2010-8-1,4,5.2 類,類是組成Java程序的基本要素。類封裝了一類對(duì)象的狀態(tài)和方法。類是用來(lái)定義對(duì)象的模板。 類的實(shí)現(xiàn)包括兩部分:類聲明和類體。基本格式為: class

2、 類名 類體的內(nèi)容 ,2010-8-1,5,5.2.1 類聲明,類聲明 :class 類名 如:class People”和“class 動(dòng)物”稱作類聲明;“People”和“動(dòng)物”分別是類名。 給類命名時(shí),遵守下列編程風(fēng)格(這不是語(yǔ)法要求的,但應(yīng)當(dāng)遵守): 1如果類名使用拉丁字母,那么名字的首字母使用大寫字母,如。 2類名最好容易識(shí)別、見名知意。當(dāng)類名由幾個(gè)“單詞”復(fù)合而成時(shí),每個(gè)單詞的首字母使用大寫。,2010-8-1,6,5.2.2 類體, 類聲明之后的一對(duì)大括號(hào)“”,“”以及它們之間的內(nèi)容稱作類體,大括號(hào)之間的內(nèi)容稱作類體的內(nèi)容。 類體的內(nèi)容由兩部分構(gòu):一部分是變量的聲明,用來(lái)刻畫屬性

3、;另一部分是方法的定義,用來(lái)刻畫功能。,2010-8-1,7,5.2.3 成員變量和局部變量,類體中變量聲明部分所聲明的變量被稱作類的成員變量。在方法體中聲明的變量和方法的參數(shù)被稱作局部變量。 1變量的類型:成員變量和局部變量的類型可以是Java中的任何一種數(shù)據(jù)類型,包括基本類型:整型、浮點(diǎn)型、字符型;引用類型:數(shù)組、對(duì)象和接口(對(duì)象和接口見后續(xù)內(nèi)容)。 2變量的有效范圍:成員變量在整個(gè)類內(nèi)都有效,局部變量只在聲明它的方法內(nèi)有效。方法參數(shù)在整個(gè)方法內(nèi)有效,方法內(nèi)的局部變量從聲明它的位置之后開始有效。 3成員變量的隱藏:如果局部變量的名字與成員變量的名字相同,則成員變量被隱藏,即這個(gè)成員變量在這

4、個(gè)方法內(nèi)暫時(shí)失效。 4編程風(fēng)格 (1)一行只聲明一個(gè)變量。 (2)變量的名字符合標(biāo)識(shí)符規(guī)定。 (3)變量名字見名知意,避免容易混淆的變量名字。,2010-8-1,8,5.2.4 方法,方法的定義包括兩部分:方法聲明和方法體。一般格式為: 方法聲明部分 方法體的內(nèi)容 1方法聲明 方法聲明包括方法名和方法的返回類型,如: float area() 注:方法的返回類型、方法的參數(shù)、方法的名字 2方法體 方法聲明之后的一對(duì)大括號(hào)“” ,“”以及之間的內(nèi)容稱作方法的方法體。方法體的內(nèi)容包括局部變量的聲明和Java語(yǔ)句。,2010-8-1,9,5.2.5 需要注意的問(wèn)題,類體的內(nèi)容由兩部分構(gòu)成:一部分是變

5、量的聲明,另一部分是方法的定義。 對(duì)成員變量的操作只能放在方法中,方法可以對(duì)成員變量和該方法體中聲明的局部變量進(jìn)行操作。在聲明成員變量時(shí)可以同時(shí)賦予初值,但是不可以在類體中有單獨(dú)的賦值語(yǔ)句(不可以有變量的聲明和方法的定義以外的其它語(yǔ)句)。,2010-8-1,10,5.2.6 類的UML圖,UML(Unified Modeling Language Diagram)圖屬于結(jié)構(gòu)圖,常被用于描述一個(gè)系統(tǒng)的靜態(tài)結(jié)構(gòu)。一個(gè)UML中通常包含有類(Class)的UML圖,接口(Interface)的UML圖以及泛化關(guān)系(Generalization)的UML圖、關(guān)聯(lián)關(guān)系(Association)的UML圖、

6、依賴關(guān)系(Dependency)的UML圖和實(shí)現(xiàn)關(guān)系(Realization)的UML圖。 在類的UML圖中,使用一個(gè)長(zhǎng)方形描述一個(gè)類的主要構(gòu)成,將長(zhǎng)方形垂直地分為三層。 第1層是名字層; 第2層是變量層,也稱屬性層; 第3層是方法層,也稱操作層。,2010-8-1,11,5.3 構(gòu)造方法與對(duì)象的創(chuàng)建,類是面向?qū)ο笳Z(yǔ)言中最重用的一種數(shù)據(jù)類型,那么就可以用它來(lái)聲明變量。在面向?qū)ο笳Z(yǔ)言中,用類聲明的變量被稱作對(duì)象。和基本數(shù)據(jù)類型不同,在用類聲明對(duì)象后,還必須要?jiǎng)?chuàng)建對(duì)象,即為聲明的對(duì)象分配變量(確定對(duì)象所具有的屬性),當(dāng)使用一個(gè)類創(chuàng)建一個(gè)對(duì)象時(shí),也稱給出了這個(gè)類的一個(gè)實(shí)例。通俗的講,類是創(chuàng)建對(duì)象的“

7、模板”,沒有類就沒有對(duì)象。構(gòu)造方法和對(duì)象的創(chuàng)建密切相關(guān) 。,2010-8-1,12,5.3.1 構(gòu)造方法,構(gòu)造方法是一種特殊方法,它的名字必須與它所在的類的名字完全相同,而且沒有類型。 允許一個(gè)類中編寫若干個(gè)構(gòu)造方法,但必須保證他們的參數(shù)不同,即參數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同。 需要注意的是 (1) 如果類中沒有編寫構(gòu)造方法,系統(tǒng)會(huì)默認(rèn)該類只有一個(gè)構(gòu)造方法,該默認(rèn)的構(gòu)造方法是無(wú)參數(shù)的,且方法體中沒有語(yǔ)句。 (2)如果類里定義了一個(gè)或多個(gè)構(gòu)造方法,那么Java不提供默認(rèn)的構(gòu)造方法 。,2010-8-1,13,5.3.2 創(chuàng)建對(duì)象,1對(duì)象的聲明 Lader lader ; 2.為聲明的對(duì)象分

8、配內(nèi)存 lader =new Lader(); 例1,例2 3對(duì)象的內(nèi)存模型 (1)聲明對(duì)象時(shí)的內(nèi)存模型 (2)對(duì)象分配內(nèi)存后的內(nèi)存模型 4創(chuàng)建多個(gè)不同的對(duì)象,2010-8-1,14,5.3.3 使用對(duì)象,1通過(guò)使用運(yùn)算符“.” 對(duì)象操作自己的變量(對(duì)象的屬性) 2使用運(yùn)算符“.”,對(duì)象調(diào)用類中的方法(對(duì)象的功能) 例3,2010-8-1,15,5.3.4 對(duì)象的引用和實(shí)體,當(dāng)用類創(chuàng)建一個(gè)對(duì)象時(shí),類中的成員變量在分配內(nèi)存空間,這些內(nèi)存空間稱作該對(duì)象的實(shí)體或?qū)ο蟮淖兞?,而?duì)象中存放著引用。 一個(gè)類創(chuàng)建的兩個(gè)對(duì)象,如果具有相同的引用,那么就具有完全相同的實(shí)體。,2010-8-1,16,5.4 參數(shù)

9、傳值,方法中最重要的部分之一就是方法的參數(shù),參數(shù)屬于局部變量,當(dāng)對(duì)象調(diào)用方法時(shí),參數(shù)被分配內(nèi)存空間,并要求調(diào)用者向參數(shù)專遞值,即方法被調(diào)用時(shí),參數(shù)變量必須有具體的值。,2010-8-1,17,5.4.1 傳值機(jī)制,在Java中,方法的所有參數(shù)都是“傳值”的,也就是說(shuō),方法中參數(shù)變量的值是調(diào)用者指定的值的拷貝。例如,如果向方法的int型參數(shù)x傳遞一個(gè)int值,那么參數(shù)x得到的值是傳遞的值的拷貝。,2010-8-1,18,5.4.2 基本數(shù)據(jù)類型參數(shù)的傳值,對(duì)于基本數(shù)據(jù)類型的參數(shù),向該參數(shù)傳遞的值的級(jí)別不可以高于該參數(shù)的級(jí)別 。 例4,2010-8-1,19,5.4.3 引用類型參數(shù)的傳值,當(dāng)參數(shù)

10、是引用類型時(shí),“傳值”傳遞的是變量中存放的“引用”,而不是變量所引用的實(shí)體。 例5,2010-8-1,20,5.5 對(duì)象的組合,一個(gè)類可以把對(duì)象作為自己的成員變量,如果用這樣的類創(chuàng)建對(duì)象,那么該對(duì)象中就會(huì)有其它對(duì)象,也就是說(shuō)該對(duì)象將其他對(duì)象作為自己的組成部分,或者說(shuō)該對(duì)象是由幾個(gè)對(duì)象組合而成。 例4-7,2010-8-1,21,5.5.1 由矩形和圓組合而成的圖形,例6,2010-8-1,22,5.5.2 關(guān)聯(lián)關(guān)系和依賴關(guān)系的UML圖,2010-8-1,23,5.6 實(shí)例成員與類成員 5.6.1 實(shí)例變量和類變量的聲明,在聲明成員變量時(shí),用關(guān)鍵字static給予修飾的稱作類變量,否則稱作實(shí)例變

11、量(類變量也稱為static變量,靜態(tài)變量)。,2010-8-1,24,5.6.2 實(shí)例變量和類變量的區(qū)別,1不同對(duì)象的實(shí)例變量互不相同 2所有對(duì)象共享類變量 3通過(guò)類名直接訪問(wèn)類變量 例7,2010-8-1,25,5.6.3 實(shí)例方法和類方法的定義,類中的方法也可分為實(shí)例方法和類方法。方法聲明時(shí),方法類型前面不加關(guān)鍵字static修飾的是實(shí)例方法、加static關(guān)鍵字修飾的是類方法(靜態(tài)方法)。,2010-8-1,26,5.6.4 實(shí)例方法和類方法的區(qū)別,1對(duì)象調(diào)用實(shí)例方法 當(dāng)對(duì)象調(diào)用實(shí)例方法時(shí),該方法中出現(xiàn)的實(shí)例變量就是分配給該對(duì)象的實(shí)例變量;該方法中出現(xiàn)的類變量也是分配給該對(duì)象的變量,只

12、不過(guò)這個(gè)變量和所有的其他對(duì)象共享而已。 2類名調(diào)用類方法 從而類方法不僅可以被類創(chuàng)建的任何對(duì)象調(diào)用執(zhí)行,也可以直接通過(guò)類名調(diào)用。和實(shí)例方法不同的是,類方法不可以操作實(shí)例變量,這是因?yàn)樵陬悇?chuàng)建對(duì)象之前,實(shí)例成員變量還沒有分配內(nèi)存。 例子8,2010-8-1,27,5.7 方法重載與多態(tài),方法重載的意思是:一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同。 例9,2010-8-1,28,5.8 this關(guān)鍵字,this是Java的一個(gè)關(guān)鍵字,表示某個(gè)對(duì)象。this可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。,2010-8-1,

13、29,5.8.1 在構(gòu)造方法中使用this,this關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時(shí),代表使用該構(gòu)造方法所創(chuàng)建的對(duì)象。 例10,2010-8-1,30,5.8.2 在實(shí)例方法中使用this,實(shí)例方法必須只能通過(guò)對(duì)象來(lái)調(diào)用,不能用類名來(lái)調(diào)用。當(dāng)this關(guān)鍵字出現(xiàn)實(shí)例方法中時(shí),代表正在調(diào)用該方法的當(dāng)前對(duì)象。 實(shí)例方法可以操作類的成員變量,當(dāng)實(shí)例成員變量在實(shí)例方法中出現(xiàn)時(shí),默認(rèn)的格式是: this.成員變量; 當(dāng)static成員變量在實(shí)例方法中出現(xiàn)時(shí),默認(rèn)的格式是: 類名.成員變量;,2010-8-1,31,5.9 包,包是Java語(yǔ)言中有效地管理類的一個(gè)機(jī)制。 包名的目的是有效的區(qū)分名字相同的類。不同

14、Java源文件中兩個(gè)類名字相同時(shí),它們可以通過(guò)隸屬不同的包來(lái)相互區(qū)分。,2010-8-1,32,5.9.1 包語(yǔ)句,通過(guò)關(guān)鍵字package聲明包語(yǔ)句。 package語(yǔ)句作為Java源文件的第一條語(yǔ)句,為該源文件中聲明的類指定包名。 package語(yǔ)句的一般格式為: package 包名;,2010-8-1,33,5.9.2 有包名的類的存儲(chǔ)目錄,程序如果使用了包語(yǔ)句,例如: package tom.jiafei; 那么存儲(chǔ)文件的目錄結(jié)構(gòu)中必須包含有如下的結(jié)構(gòu) tomjiafei 如: c:1000tomjiafei 并且要將源文件編譯得到的類的字節(jié)碼文件保存在目錄c:1000tomjiaf

15、ei中(源文件可以任意存放)。,2010-8-1,34,5.9.3 運(yùn)行有包名的主類,如果主類的包名是tom.jiafei,那么主類的字節(jié)碼一定存放在tomjiefei目錄中,運(yùn)行時(shí)必須到tomjiefei的上一層(即tom的父目錄)目錄中去運(yùn)行主類。 假設(shè)tomjiefei的上一層目錄是1000,那么,必須如下格式來(lái)運(yùn)行: C:1000java tom.jiafei.主類名 注:主類名是:“包名.主類名” 例11,2010-8-1,35,5.10 import 語(yǔ)句,一個(gè)類可能需要另一個(gè)類聲明的對(duì)象作為自己的成員或方法中的局部變量,如果這兩個(gè)類在同一個(gè)包中,當(dāng)然沒有問(wèn)題。 如果一個(gè)類想要使用

16、的那個(gè)類和它不在一個(gè)包中,要使用import語(yǔ)句完成使命。,2010-8-1,36,5.10.1 引入類庫(kù)中的類,如果用戶需要類庫(kù)中的類就必須使用import語(yǔ)句,如: import java.until.Date; 例12,2010-8-1,37,5.10.2 引入自定義包中的類,用戶程序可以使用tom.jiafei包中的類 如: import tom.jiafei.*; 使用非類庫(kù)中有包名的類,也要使用import語(yǔ)句。 例13, 14,2010-8-1,38,5.11 訪問(wèn)權(quán)限,當(dāng)用一個(gè)類創(chuàng)建了一個(gè)對(duì)象之后,該對(duì)象可以通過(guò)“.”運(yùn)算符操作自己的變量、使用類中的方法,但對(duì)象操作自己的變量和

17、使用類中的方法是有一定限制的。,2010-8-1,39,5.11.1 何謂訪問(wèn)權(quán)限,所謂訪問(wèn)權(quán)限是指對(duì)象是否可以通過(guò)“.”運(yùn)算符操作自己的變量或通過(guò)“.”運(yùn)算符使用類中的方法。 訪問(wèn)限制修飾符有private、protected和public,都是Java的關(guān)鍵字,用來(lái)修飾成員變量或方法。,2010-8-1,40,5.11.2 私有變量和私有方法,用關(guān)鍵字private修飾的成員變量和方法稱為私有變量和私有方法。 對(duì)于私有成員變量或方法,只有在本類中創(chuàng)建該類的對(duì)象時(shí),這個(gè)對(duì)象才能訪問(wèn)自己的私有成員變量和類中的私有方法。 例15,2010-8-1,41,5.11.3 共有變量和共有方法,用pub

18、lic修飾的成員變量和方法被稱為共有變量和共有方法 。 我們?cè)谌魏我粋€(gè)類中用類Tom 創(chuàng)建了一個(gè)對(duì)象后,該對(duì)象能訪問(wèn)自己的public變量和類中的public方法(也可以通過(guò)類名來(lái)操作成員變量、方法) 。,2010-8-1,42,5.11.4 友好變量和友好方法,當(dāng)在另外一個(gè)類中用類Tom 創(chuàng)建了一個(gè)對(duì)象后,如果這個(gè)類與Tom類在同一個(gè)包中,那么該對(duì)象能訪問(wèn)自己的友好變量和友好方法。 在任何一個(gè)與Tom同一包中的類中,也可以通過(guò)Tom類的類名訪問(wèn)Tom類的類友好成員變量和類友好方法。,2010-8-1,43,5.11.5 受保護(hù)的成員變量和方法,用protected修飾的成員變量和方法被稱為受

19、保護(hù)的成員變量和受保護(hù)的方法 。,2010-8-1,44,5.11.6 public類與友好類,類聲明時(shí),如果在關(guān)鍵字class前面加上public關(guān)鍵字,就稱這樣的類是一個(gè)public 類 。 可以在任何另外一個(gè)類中,使用public類創(chuàng)建對(duì)象。 如果一個(gè)類不加public修飾,這樣的類被稱作友好類。 在另外一個(gè)類中使用友好類創(chuàng)建對(duì)象時(shí),要保證它們是在同一包中。,2010-8-1,45,5.12 基本類型的類包裝,Java的基本數(shù)據(jù)類型包括:byte、int、short、long、float、double、char。 Java提供了基本數(shù)據(jù)類型相關(guān)的類,實(shí)現(xiàn)了對(duì)基本數(shù)據(jù)類型的封裝。 這些類分

20、別是:Byte、Integer、Short、Long、Float、Double和Character類。這些類在java.lang包中。,2010-8-1,46,5.12.1 Double和Float類,Double類和Float類實(shí)現(xiàn)了對(duì)double和float基本型數(shù)據(jù)的類包裝。 Double類的構(gòu)造方法:Double(double num) Float類的構(gòu)造方法: Float(float num) Double對(duì)象調(diào)用doubleValue()方法可以返回該對(duì)象含有的double型數(shù)據(jù)。 Float對(duì)象調(diào)用floatValue()方法可以返回該對(duì)象含有的float型數(shù)據(jù)。,2010-8-1,47,5.12.2 Byte、Short 、Integer、Long類,上述個(gè)類的構(gòu)造方法分別 : Byte(byte num) Short(short num) Integer(int num) Long(long num) Byte、Short、Integer和Long對(duì)象分別調(diào)用 byteValue ()、shortValue

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論