面對對象編程基礎(chǔ)PPT演示文稿_第1頁
面對對象編程基礎(chǔ)PPT演示文稿_第2頁
面對對象編程基礎(chǔ)PPT演示文稿_第3頁
面對對象編程基礎(chǔ)PPT演示文稿_第4頁
面對對象編程基礎(chǔ)PPT演示文稿_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、知識實踐回顧 1、編譯單元組織靈活,一個編譯單元可以有多個類,在實驗中是兩個類,即computer和tester,兩個類一個是計算機類,一個是測試類; 2、一個類可以包括成員屬性和成員方法; 成員屬性一般定義為private范圍,成員方法為public范圍; 3、方法如定義為private,是內(nèi)部helper方法,數(shù)據(jù)隱藏部分,其他類無法直接使用 4、類定義好后,通過類進行對象的實例化和初始化。(對于成員變量初始化順序,1.聲明時初始化 2. 初始化代碼塊初始化 3. 構(gòu)造器初始化 ) 如果沒有給類定義無參數(shù)構(gòu)造器,則編譯器創(chuàng)建對象不帶參數(shù)時,會隱式調(diào)用構(gòu)造,初始化成員變量為系統(tǒng)默認值(p13

2、3表6-3)。 5、成員方法的訪問方式(在另一個類中)對象名.方法名 變量 = 對象名.方法名 /如果有返回值 6、作用范圍,由小到大有四種, 依次為private,default,protected,public其中對于類、屬性,和方法適用的如下: 類:public,default,private(內(nèi)部類) 屬性:四種都有,一般是private 方法:public,default,private 第5講 面對對象編程基礎(chǔ)(下)西亞斯學院計算機系 姜斌2009年第4章 類和對象 一、包一、包 二、靜態(tài)修飾符二、靜態(tài)修飾符 * * 三、三、最終類、最終屬性、最終方法 (final) 四、其他類庫

3、里的常見類四、其他類庫里的常見類 本章小結(jié)本章小結(jié) 思考與練習思考與練習 一、包1、包概念以及類庫中的包 java允許把多個類收集在一起成為一組,稱作包(package),管理類的一種組織形式。標準java庫被分類成許多的包,其中包括java.lang、java.util和等等。(注意java.lang包是基本語言包,是默認導入包) 按功能劃分1.分層的2、系統(tǒng)默認包 如果我們沒有定義包,編譯后所有class文件會當前目錄中,java會認為當前目錄所有類在一個匿名包中,如果使用默認訪問范圍,這些類文件可以相互訪問。3、如何創(chuàng)建用戶包 創(chuàng)建包,我們可以通過package語句創(chuàng)建自己的包, 包名的

4、命名約定1)可以多個英文單詞的名稱,但必須全小寫字母;2)當存在多層時,可以參考域名的反向定義; s puter_app.*;3)如果不是規(guī)范名稱,可轉(zhuǎn)為合法的名稱注意:package語句一定要在第一行,即import 之前 (課下可以練習一下類的訪問控制練習,對照一下public和default范圍的區(qū)別)4、包使用中的作用范圍例子:定義兩個包one和two,在包one中包含一個類a,在包two中b,c思考: 對于default和public來修飾類,范圍有何區(qū)別?對于default和public來修飾屬性和方法,范圍又有何區(qū)別? 見例子二、靜態(tài)修飾符、靜態(tài)字段和方法1、靜態(tài)修飾符、靜態(tài)修飾

5、符 static稱為靜態(tài)修飾符,它可以修飾類中的屬性和方法。使用static(靜態(tài))關(guān)鍵字, 靜態(tài)屬性具有如下的要求: 1)一種情形是只想用一個存儲區(qū)域來保存一個特定的數(shù)據(jù)無論要創(chuàng)建多少個對象,甚至根本不創(chuàng)建對象; 2)被static修飾的屬性稱為靜態(tài)屬性,這類屬性一個最本質(zhì)的特點是:它們是類屬性,而不屬于任何一個類的具體對象。 2、靜態(tài)屬性靜態(tài)屬性的特點: 靜態(tài)屬性類似于其他語言的全局變量;static 換句話說,對于該類的任何一個具體對象而言,靜態(tài)屬性是一個公共的存儲單元,任何一個類的對象訪問它時,取到的都是相同的數(shù)值;同樣任何一個類的對象去修改它時,也都是在對同一個內(nèi)存單元做操作; 靜態(tài)

6、屬性的值也可通過對象獲得到。靜態(tài)變量,對應(yīng)一個類只有一份,對于成員變量,每個對象都有獨立的一份;例如:此處的count用于統(tǒng)計我們創(chuàng)建對象的個數(shù),它的初值為count = 0;等我們創(chuàng)建三個對象后,它的值應(yīng)該為3。newnewnew俺是黃色的* 類似于其他語言全局變量類似于其他語言全局變量-string colorint count (static)face(臉)(臉)俺是藍色的俺是紅色的 靜態(tài)屬性圖示color=“黃”color color count3、靜態(tài)方法另一種情形是我們需要一個特殊的方法,它沒有與這個類的任何對象關(guān)聯(lián)。也就是說,即使沒有創(chuàng)建對象,也需要一個能調(diào)用的方法。(通過類名來

7、訪問這個方法) static一項要的用途就是定義提供功能操作的方法,幫助我們在不必創(chuàng)建對象的前提下調(diào)用那個方法,調(diào)用方便。 包括靜態(tài)變量和靜態(tài)常量。包括靜態(tài)變量和靜態(tài)常量。 靜態(tài)變量靜態(tài)變量常常用于類統(tǒng)計信息,靜態(tài)變量是可以通過一個類的對象訪問和更改的。常常用于類統(tǒng)計信息,靜態(tài)變量是可以通過一個類的對象訪問和更改的。 靜態(tài)常量靜態(tài)常量 靜態(tài)常量是不能更改只能夠訪問靜態(tài)常量是不能更改只能夠訪問。往往是一個類提供的特殊數(shù)值,例。往往是一個類提供的特殊數(shù)值,例如,如,mathmath類中定義了一個靜態(tài)量:類中定義了一個靜態(tài)量:public class mathpublic class math pu

8、blic static public static finalfinal double pi=3.1.4159265358979323846; double pi=3.1.4159265358979323846; 4、靜態(tài)字段 聲明一個方法為聲明一個方法為static至少有兩重含義:至少有兩重含義:(1)使用這個方法時,)使用這個方法時,應(yīng)該使用類名做前綴,應(yīng)該使用類名做前綴,而 不 是 某 一 個 具 體 的 對 象 名而 不 是 某 一 個 具 體 的 對 象 名 ;(integer.parseint(), math.random() 等等等等)(2)成員的方法是屬于某個對象的方法,每成員

9、的方法是屬于某個對象的方法,每個對象都有自己的成員方法個對象都有自己的成員方法;而;而static的方的方法是屬于整個類的法是屬于整個類的,它在內(nèi)存中的代碼段將它在內(nèi)存中的代碼段將隨著隨著類分配類分配和裝載和裝載,不被任何一個對象專有。,不被任何一個對象專有。5、 靜態(tài)方法涵義(1)由于)由于static方法是屬于整個類的方法是屬于整個類的,所以它,所以它不能不能操縱和處理對象的成員變量操縱和處理對象的成員變量,而,而只能處理靜態(tài)變只能處理靜態(tài)變量量; ; 反過來,反過來,成員方法可以訪問靜態(tài)變量或常量成員方法可以訪問靜態(tài)變量或常量。 (2)(2)同理,同理,static方法中也不能訪問成員方

10、法方法中也不能訪問成員方法; 反過來,反過來,成員方法中可以訪問靜態(tài)方法。成員方法中可以訪問靜態(tài)方法。 概括一下:靜態(tài)方法不可以訪問成員概括一下:靜態(tài)方法不可以訪問成員, ,反之可以反之可以6、靜態(tài)方法和成員變量、方法關(guān)系7、 main方法方法 main方法是特殊的靜態(tài)方法。通過它執(zhí)方法是特殊的靜態(tài)方法。通過它執(zhí)行程序,當程序開始執(zhí)行時,還不存在任何行程序,當程序開始執(zhí)行時,還不存在任何對象。靜態(tài)方法被執(zhí)行,并構(gòu)造程序所需的對象。靜態(tài)方法被執(zhí)行,并構(gòu)造程序所需的對象。對象。 提示提示 每個類都可以有一個每個類都可以有一個main方法。這方法。這是對類進行單元測試的一個很方便技巧是對類進行單元測

11、試的一個很方便技巧。 8、 靜態(tài)嵌套類 一個static修飾的靜態(tài)的類也可以嵌套在另一個一般類中,稱為靜態(tài)嵌套類,可以理解為類的靜態(tài)成員。 詳細的例子,見:書上4.13.三、最終類、最終屬性和最終方法1、最終修飾符final是最終修飾符,它可以修飾類、屬性和方法。本身英文含義是“最終的”;它在java中意味,不能夠改變2、最終類、最終類 如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為abstract的,又被聲明為final的。 被定義成final的類,通常是一些有特殊作用的、用來完成標準功能的類,將一個類定義為final則可以將它的內(nèi)容

12、、屬性和功能固定下來。 例如:類庫中很多類都是final的,如:system, string,其它基本類型的包裝類(integer),以及math類等等。 final定義的屬性,后來不能夠改變(重新賦值)定義的屬性,后來不能夠改變(重新賦值) 許多程序設(shè)計語言把這種數(shù)據(jù)稱為許多程序設(shè)計語言把這種數(shù)據(jù)稱為“常量常量” 或或“常數(shù)常數(shù)” 。常數(shù)主要應(yīng)用于下述兩個方面:。常數(shù)主要應(yīng)用于下述兩個方面: 1)靜態(tài)常量,靜態(tài)常量,要加上要加上static關(guān)鍵詞,可以通過類名關(guān)鍵詞,可以通過類名直接引用直接引用; 注意:類庫很多類都定義有靜態(tài)常量,例如注意:類庫很多類都定義有靜態(tài)常量,例如math.pi 3

13、、 最終屬性最終屬性2)成員常量,在)成員常量,在運行期初始化的運行期初始化的一個值,我們不希一個值,我們不希望它發(fā)生變化望它發(fā)生變化 可以把一個可以把一個成員屬性成員屬性定義為定義為final(不能改變的不能改變的)。 注意:注意:在對象被構(gòu)造時,這種字段必須被初始化。在對象被構(gòu)造時,這種字段必須被初始化。即,必須保證在每一個構(gòu)造方法結(jié)束之前其值已即,必須保證在每一個構(gòu)造方法結(jié)束之前其值已被設(shè)定。以后字段的值不能改變。被設(shè)定。以后字段的值不能改變。例如:我們定義一個例如:我們定義一個school_nameschool_name常量,常量,如下:如下:public final string s

14、chool_name=public final string school_name=“siassias”; ; 所以要使用所以要使用final方法,可能是出于對兩方面理由的考慮。方法,可能是出于對兩方面理由的考慮。 第一個是第一個是為方法為方法“上鎖上鎖”,防止任何,防止任何繼承類繼承類改變它的本來改變它的本來含義。設(shè)計程序時,若希望一個方法的行為在繼承期間保持含義。設(shè)計程序時,若希望一個方法的行為在繼承期間保持不變,而且不變,而且不可被覆蓋或改寫不可被覆蓋或改寫,就可以采取這種做法。,就可以采取這種做法。 采用采用final方法的第二個理由是方法的第二個理由是程序執(zhí)行的程序執(zhí)行的效率效率。

15、 4、最終方法、最終方法本講小結(jié) 介紹了靜態(tài)類型的變量、方法, 靜態(tài)變量如何在類似于全局變量,它的值如何被所有對象所共享; 介紹了我們?nèi)绾问褂贸橄箢悂矶x現(xiàn)實事物中的抽象繼承關(guān)系; 介紹了final關(guān)鍵詞定義的常量,以及如何通過它來定義最終方法和最終類;課后作業(yè) 做課后的4,5,6; 把上一周的employee類中多定義一個靜態(tài)變量count;通過它來統(tǒng)計對象產(chǎn)生的數(shù)量; 定義一個交通工具(transportation)的抽象類(可具有name和speed屬性),上一周我們通過plane類定義了的飛機,再定義一個vehicle(汽車類),使plane和vehicle類繼承交通工具類, plan

16、e類具有獨特的屬性,如機翼(wing);vehicle類可以具有輪胎(wheel),抽象方法自定。四、其他類庫里的常見類四、其他類庫里的常見類java語言概述311. object類類中的“黃帝” 是一個特殊的類,所有類(包括類庫中的和用開發(fā)者創(chuàng)作的類都屬于其子類,并繼承其內(nèi)容) object類是所有類的根. 每個類都以它來作為超類, 所有的類, 包括 數(shù)組(arrays), 都可實現(xiàn)覆蓋object類中的方法. 每個類都隱藏地擴展了此類,即等同于在類地聲明時加入,“extends object”java語言概述32object類的方法常用的方法:常用的方法:string tostring()

17、 輸出關(guān)于對象的描述信息,可以被覆蓋返回對象的字符串表示。object 的方法返回一個字符串、包含該對象的類名、一個字符和實例散列碼的十六進制表示。例如可以在plane類中有tostring方法。 方法為: public string tostring() return (speed is:+ speed + nlook is:+look); protected object clone() 創(chuàng)建并返回此對象的一個副本。(在子類中不要依賴object的這個方法。) boolean equals(object obj) 指示某個其他對象是否與此對象“相等”。(在子類中不要依賴object的這個方

18、法。) protected void finalize() 當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調(diào)用此方法。 class getclass() 返回一個對象的運行時類。 int hashcode() 返回該對象的哈希碼值。2. scanner類 scanner類是一個可以使用正則表達式來分析基本類型和字符串的簡單文本掃描器。 在java.util包下; 使用分隔符模式將其輸入分解為標記,默認情況下該分隔符模式與空白匹配。然后可以使用不同的 next 方法將得到的標記轉(zhuǎn)換為不同類型的值。 可以構(gòu)造一個新的 scanner,它生成的值是從指定的輸入流掃描的。 構(gòu)造器型構(gòu)為scanner( inputstream source);以下代碼使用戶能夠從 system.in 中讀取一個字符串值: scanner sc = new scanner(system.in); string i = sc.next(); 以下代碼使用戶能夠從 s

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論