




已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章,面向?qū)ο缶幊?2,目標(biāo),理解對(duì)象 理解類 理解抽象和封裝 理解對(duì)象與類之間的關(guān)系 掌握包的創(chuàng)建和導(dǎo)入,3,面向?qū)ο缶幊?4,對(duì)象,具備某種功能 完成特定任務(wù),“對(duì)象是存在的具體實(shí)體,具有明確定義的特征和行為。”,5,對(duì)象的示例,收銀員對(duì)象,顧客對(duì)象,顧客 姓名:朱麗葉 年齡:28 操作: 購(gòu)買商品,特征,姓名:布蘭尼 年齡:35 職務(wù):收銀員 操作: 收款 打印帳單,行為,6,類,類是面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)和核心 類是對(duì)象的抽象和歸納,是對(duì)象的模板,水果類,動(dòng)物類,汽車類,類的示例,“類是具有相同屬性和方法的一組對(duì)象的集合”,7,類和對(duì)象的示例,收銀員,系統(tǒng)管理員,倉(cāng)庫(kù)管理員,促銷員,部門經(jīng)理,8,屬性,屬性名稱由類的所有實(shí)例共享 事物的特征在類中表示為變量 每個(gè)對(duì)象的每個(gè)屬性都擁有其特有的值,住址,姓名,屬性,年齡,“在類中屬性表示對(duì)象或?qū)嶓w擁有的特征 ”,9,方法,“對(duì)象執(zhí)行的操作稱為方法?!?10,方法的示例,縫制衣服的步驟,量尺寸,得到工具,縫衣服,方法,縫制衣服,裁縫,11,類和對(duì)象的區(qū)別,類是概念模型, 定義對(duì)象的所 有特性和所需 的操作,對(duì)象是類的實(shí)例,類定義對(duì)象,對(duì)象是實(shí)際的實(shí)體,12,類與對(duì)象的關(guān)系示例,類與對(duì)象的關(guān)系示例,13,抽象,處理事物復(fù)雜性的方法,只關(guān)注事物的重要細(xì)節(jié),而忽略事物的次要細(xì)節(jié)。,數(shù)據(jù)抽象:“根據(jù)具體的應(yīng)用抽取出類的相關(guān)屬性和操作?!?14,數(shù)據(jù)抽象的示例,屬性,方法,getName(),getStudentNO(),getSeatNumber(),15,封裝,信息隱藏,隱藏對(duì)象的實(shí)現(xiàn)細(xì)節(jié),不讓用戶看到 將東西包裝在一起,然后以新的完整形式呈現(xiàn)出來 例如,兩種或多種化學(xué)藥品組成一個(gè)膠囊 將方法和屬性一起包裝到一個(gè)單元中,單元以類的形式實(shí)現(xiàn),“隱藏屬性、方法或?qū)崿F(xiàn)細(xì)節(jié)的過程稱為封裝?!?16,封裝的示例 3-1,采購(gòu)經(jīng)理,羅杰斯先生,大眾汽車公司,.,通用汽車公司,.,市場(chǎng)經(jīng)理,雪莉女士,要求,17,封裝的示例 3-2,有選擇地提供數(shù)據(jù),大眾汽車公司,通用汽車公司,18,封裝的示例 3-3,實(shí)體大眾汽車公司,實(shí)體通用汽車公司,Auti Ltd,.,Buto Ltd,.,19,封裝的特征: (1) 在類的定義中設(shè)置訪問對(duì)象屬性(數(shù)據(jù)成員)及方法(成員方法)的權(quán)限,限制本類對(duì)象及其他類的對(duì)象使用的范圍。 (2) 提供一個(gè)接口來描述其他對(duì)象的使用方法。 (3) 其他對(duì)象不能直接修改本對(duì)象所擁有的屬性和方法。,封裝的示例 3-4,20,1.定義類的一般格式 (1) 系統(tǒng)定義的類,即Java類庫(kù),是系統(tǒng)定義好的類,類庫(kù)是Java語言的重要組成部分。Java類庫(kù)是一組由它的發(fā)明者SUN公司以及其他軟件開發(fā)商編寫好的Java程序模塊,每個(gè)模塊通常對(duì)應(yīng)一種特定的基本功能和任務(wù),且這些模塊都是經(jīng)過嚴(yán)格測(cè)試的,因而也總是正確有效的。當(dāng)自己編寫的Java程序需要完成其中某一功能的時(shí)候,就可以直接利用這些現(xiàn)成的類庫(kù),而不需要一切從頭編寫,這樣不僅可以提高編程效率,也可以保證軟件的質(zhì)量。,類的定義,21,(2) 用戶自己定義的類。 在Java程序中,用戶自己定義類的一般格式如下:,類的定義,語法 class 類名 類體 其中: class 是創(chuàng)建類所使用的關(guān)鍵字, 類體包含屬性(數(shù)據(jù)成員)和成員方法的聲明。,22,類的簡(jiǎn)單定義,類的命名規(guī)則: 不能為 Java 中的關(guān)鍵字 不能包含空格或點(diǎn)號(hào)“. ” 可以下劃線“_”、字母或“$”符號(hào)開頭,class Book String bookName; String authorName; int nopages; boolean available; ,23,類中的方法 4-1,方法的名稱,參數(shù)列表,方法的主體,方法返回的數(shù)據(jù)類型,24,類中的方法 4-2,語法: 返回值類型 方法名 (參數(shù)列表) 方法體(語句體) ,25,類中的方法 4-3,class Book String bookName; String authorName; int nopages; boolean available; void isAvailable() if(available = true) System.out.println(“有這本書“); ,26,創(chuàng)建對(duì)象通常包括聲明對(duì)象、建立對(duì)象和初始化對(duì)象三步。 1聲明對(duì)象 聲明對(duì)象就是確定對(duì)象的名稱,并指明該對(duì)象所屬的類。聲明對(duì)象的格式如下: 類名 對(duì)象名表; 例如:Class_name object_one,object_two;,對(duì)象的聲明,27,2建立對(duì)象 建立對(duì)象就是用new關(guān)鍵字為對(duì)象分配存儲(chǔ)空間。只有通過建立對(duì)象這一步,才為對(duì)象分配內(nèi)存,使該對(duì)象成為類的實(shí)例。 建立對(duì)象的格式如下: 對(duì)象名=new 構(gòu)造方法( ); 例如:object_one = new Class_name( ); object_two= new Class_name( );,對(duì)象的建立,28,3.創(chuàng)建對(duì)象的格式如下: 類名 對(duì)象名= new 構(gòu)造方法名( ); 例如:Class_name object_one= new Class_name( ); Class_name object_two= new Class_name( ); 其中:new的作用是建立對(duì)象,為對(duì)象分配存儲(chǔ)空間。執(zhí)行new Class_name( )將產(chǎn)生一個(gè)Class_name( )類的實(shí)例(對(duì)象)。,對(duì)象的創(chuàng)建,與類名相同,29,4.使用對(duì)象 一個(gè)對(duì)象可以有許多屬性和多個(gè)方法。當(dāng)一個(gè)對(duì)象被創(chuàng)建后,這個(gè)對(duì)象就擁有了自己的數(shù)據(jù)成員和成員方法,我們可以通過引用對(duì)象的成員來使用對(duì)象。 對(duì)象的數(shù)據(jù)成員的引用方式如下: 對(duì)象名.數(shù)據(jù)成員名 對(duì)象的成員方法的引用方式如下: 對(duì)象名.成員方法名(參數(shù)表),對(duì)象的使用,30,示例,class Book String bookName; String authorName; int nopages; boolean available; static void isAvailable() if(available = true) System.out.println(“有這本書“); Book objBook = new Book(); objBook.isAvailable(); ,31,類的嚴(yán)謹(jǐn)定義格式如下: 類修飾符 class 類名 extends 父類名 implements 接口列表 數(shù)據(jù)成員 成員方法 ,類的嚴(yán)謹(jǐn)定義,32,訪問修飾符 6-1,信息隱藏是 OOP 最重要的功能之一,也是使用訪問修飾符的原因。 信息隱藏的原因包括: 對(duì)任何實(shí)現(xiàn)細(xì)節(jié)所作的更改不會(huì)影響使用該類的代碼 防止用戶意外刪除數(shù)據(jù),訪問修飾符,33,訪問修飾符 6-2,34,6.1 類修飾符 類的修飾符用于說明對(duì)它的訪問限制,一個(gè)類可以沒有修飾符,也可以有public、final、abstract等幾種不同的修飾符。 1無修飾符的情況 如果一個(gè)類前無修飾符,則這個(gè)類只能被同一個(gè)包里的類使用。Java規(guī)定,同一個(gè)程序文件中的所有類都在同一個(gè)包中。這也就是說,無修飾符的類可以被同一個(gè)程序文件中的類使用,但不能被其他程序文件中的其他包中的類使用。,類訪問修飾符 6-3,35,【示例程序C3_1.java】 class Aa /無修飾符的類Aa int a=45; /Aa類的數(shù)據(jù)成員a public class C3_1 /公共類C3_1 public static void main(String args) Aa a1=new Aa( );/類C3_1中創(chuàng)建了一個(gè)無修飾符類Aa的對(duì)象a1 System.out.println(a1.a); ,36,2public修飾符 如果一個(gè)類的修飾符是public,則這個(gè)類是公共類。公共類不但可供它所在包中的其他類使用,也可供其他包中的類使用。在程序中可以用import語句引用其他包中的public類。Java規(guī)定,在一個(gè)程序文件中,只能定義一個(gè)public類,其余的類可以是無修飾符的類,也可以是用final修飾符定義的最終類,否則編譯時(shí)會(huì)報(bào)錯(cuò)。,類訪問修飾符 6-4,37,【示例程序C3_2.java】 class Fp C3_2 f1=new C3_2( ); int add( ) return(f1.b+f1.c); ,public class C3_2 int b=20,c=3; public static void main(String args) Fp p1=new Fp( ); System.out.println(p1.add( ); ,運(yùn)行結(jié)果:23,38,3final修飾符 用final修飾符修飾的類被稱為最終類。最終類是不能被任何其他類所繼承的。定義最終類的目的有三: (1) 用來完成某種標(biāo)準(zhǔn)功能。將一個(gè)類定義為final類,則可以將它的內(nèi)容、屬性和功能固定下來,與它的類名形成穩(wěn)定的映射關(guān)系,從而保證引用這個(gè)類時(shí)所實(shí)現(xiàn)的功能是正確無誤的。,類訪問修飾符 6-5,39,(2) 提高程序的可讀性。從父類派生子類,再?gòu)淖宇惻缮宇?,使軟件變得越來越?fù)雜。而在必要的層次上設(shè)置final類,可以提高程序的可讀性。 (3) 提高安全性。病毒的闖入途徑之一是在一些處理關(guān)鍵信息的類中派生子類,再用子類去代替原來的類。由于用final修飾符定義的類不能再派生子類,截?cái)嗔瞬《娟J入的途徑,因而提高了程序的安全性。,40,4abstract修飾符 用abstract修飾符修飾的類稱為抽象類。其作用在于將許多有關(guān)的類組織在一起,提供一個(gè)公共的基類,為派生具體類奠定基礎(chǔ)。另外,當(dāng)一個(gè)類中出現(xiàn)一個(gè)或多個(gè)用abstract修飾符定義的方法時(shí),則必須在這個(gè)類的前面加上abstract修飾符,將其定義為抽象類。,訪問修飾符 6-6,41,5類修飾符使用注意事項(xiàng) 可以同時(shí)使用兩個(gè)修飾符來修飾一個(gè)類,當(dāng)使用兩個(gè)修飾符修飾一個(gè)類時(shí),這些修飾符之間用空格分開,寫在關(guān)鍵字class之前,修飾符的順序?qū)︻惖男再|(zhì)沒有任何影響。 需要注意的是:一個(gè)類可以被修飾為public abstract,也可以被修飾為public final,但不能被修飾為abstract final,這是因?yàn)閍bstract類自身沒有對(duì)象,需要派生子類后再創(chuàng)建子類的對(duì)象,而final類不能派生子類,所以不存在用abstract final兩個(gè)修飾符修飾的類。,訪問修飾符 6-7,42,1. 無修飾符:具有包訪問特性。 2. public訪問修飾符:用public修飾的數(shù)據(jù)成員稱為公有數(shù)據(jù)成員,使用時(shí)危險(xiǎn),通常不使用。 3. private訪問修飾符:用private修飾的數(shù)據(jù)成員稱為私有數(shù)據(jù)成員。私有數(shù)據(jù)成員只能在定義它的類中使用,不能在類外使用,是對(duì)類進(jìn)行封裝時(shí)使用的主要方法。 4. protected訪問修飾符:用protected修飾的數(shù)據(jù)成員可以被該類及其子類的成員訪問,同一個(gè)包中的類也可訪問。主要作用是允許其他包中的子類訪問父類。,數(shù)據(jù)成員訪問修飾符 6-7,43,class ClassA private int k; private void methodA() System.out.println(“私有方法”); class ClassB void methodB() ClassA a=new ClassA(); a.k=10; / a.methodA(); / ,數(shù)據(jù)成員訪問修飾符示例,44,5. static修飾的靜態(tài)數(shù)據(jù)成員 用static修飾符修飾的數(shù)據(jù)成員不屬于任何一個(gè)類的具體對(duì)象,而是屬于類的靜態(tài)數(shù)據(jù)成員。其特點(diǎn)如下: (1) 它被保存在類的內(nèi)存區(qū)的公共存儲(chǔ)單元中,而不是保存在某個(gè)對(duì)象的內(nèi)存區(qū)中。因此,一個(gè)類的任何對(duì)象訪問它時(shí),存取到的都是相同的數(shù)值。 (2) 可以通過類名加點(diǎn)操作符訪問它。 (3) static數(shù)據(jù)成員仍屬于類的作用域,還可以使用public static、 private static等進(jìn)行修飾。修飾符不同,可訪問的層次也不同。,數(shù)據(jù)成員修飾符 6-8,45,class Pc static double ad=8; ,public class C3_5 public static void main(Stringargs) Pc m=new Pc( ); Pc m1=new Pc( ); m.ad=0.2; System.out.println(“m1=“+m1.ad); System.out.println(“Pc=“+Pc.ad); System.out.println(“m=“+m.ad); ,【示例程序C3_5.java】 對(duì)上述(1)和(2)的示例。,運(yùn)行結(jié)果:m1=0.2 Pc=0.2 m=0.2,46,6. final修飾符:用final修飾符修飾的數(shù)據(jù)成員稱為最終數(shù)據(jù)成員。最終數(shù)據(jù)成員可以在聲明時(shí)進(jìn)行初始化,也可以通過構(gòu)造方法賦值,但不能在程序的其他部分賦值,它的值在程序的整個(gè)執(zhí)行過程中是不能改變的。 用final修飾符說明常量時(shí),需要注意: 需要說明常量的數(shù)據(jù)類型并指出常量的具體值。,數(shù)據(jù)成員修飾符 6-9,47,class Ca static int n=20; final int n1; final int k=40; Ca( ) n1= +n; ,public class C3_6 public static void main(String args) Ca m1=new Ca( ); Ca m2=new Ca( ); / m1.n1=90; System.out.println(“m1.n1=“+m1.n1); System.out.println(“m1.k=“+m1.k); System.out.println(“m2.n1=“+m2.n1); System.out.println(“m2.k=“+m2.k); ,【示例程序C3_6.java】,運(yùn)行結(jié)果: m1.n1=21 m1.k=40 m2.n1=22 m2.k=40,48,課堂練習(xí),1. P76 例3.10,49,在成員方法頭中: 修飾符可以是公共訪問控制符public、私有訪問控制符private、保護(hù)訪問控制符protected等訪問權(quán)限修飾符,也可以是靜態(tài)成員方法修飾符static、最終成員方法修飾符final、本地成員方法修飾符native、抽象成員方法修飾符abstract等非訪問權(quán)限修飾符。訪問權(quán)限修飾符指出滿足什么條件時(shí)該成員方法可以被訪問。非訪問權(quán)限修飾符指明數(shù)據(jù)成員的使用方式。,成員方法修飾符,50,方法修飾符,51,static 修飾符 3-1,static修飾符修飾的方法叫靜態(tài)方法。 靜態(tài)方法是屬于整個(gè)類的類方法,不用static修飾符限定的方法,是屬于某個(gè)具體類對(duì)象的方法。 static方法使用特點(diǎn)如下: (1) static方法是屬于整個(gè)類的,它在內(nèi)存中的代碼段將隨著類的定義而分配和裝載。而非static的方法是屬于某個(gè)對(duì)象的方法,當(dāng)這個(gè)對(duì)象創(chuàng)建時(shí),在對(duì)象的內(nèi)存中擁有這個(gè)方法的專用代碼段。 (2) 引用靜態(tài)方法時(shí),可以使用對(duì)象名做前綴,也可以使用類名做前綴。,52,static 修飾符 3-2,(3) static方法只能訪問static數(shù)據(jù)成員,不能訪問非static數(shù)據(jù)成員,但非static方法可以訪問static數(shù)據(jù)成員。 (4) static方法只能訪問static方法,不能訪問非static方法,但非static方法可以訪問static方法。 (5) main方法是靜態(tài)方法。在Java的每個(gè)Application程序中,都必須有且只能有一個(gè)main方法,它是Application程序運(yùn)行的入口點(diǎn)。,53,例: class F int d1; static int d2; void me( ) static void me1( ) static void me2( ) me1( ); /合法引用 d1=34; /錯(cuò),引用了非static數(shù)據(jù)成員 me( ); /錯(cuò),引用了非static方法 d2=45; ,54,final 修飾符2-1,55,final修飾的最終方法: 用final修飾符修飾的方法稱為最終方法,如果類的某個(gè)方法被final修飾符所限定,則該類的子類就不能覆蓋父類的方法,即不能再重新定義與此方法同名的自己的方法,而僅能使用從父類繼承來的方法。可見,使用final修飾方法,就是為了給方法“上鎖”,防止任何繼承類修改此方法,保證了程序的安全性和正確性。,final 修飾符2-2,56,native修飾的本地方法: 修飾符native修飾的方法稱為本地方法,此方法使用的目的是為了將其他語言(例如C、C、FORTRAN、匯編等)嵌入到Java語言中。這樣Java可以充分利用已經(jīng)存在的其他語言的程序功能模塊,避免重復(fù)編程。,native 修飾符,57,abstract 修飾符 2-1,由abstract修飾的方法叫抽象方法;由abstract修飾的類叫抽象類 抽象方法必須聲明在抽象類中 抽象方法語法: abstract 返回值類型 方法名(形式參數(shù)列表); 聲明抽象類語法: abstract class 抽象方法不具有任何實(shí)現(xiàn)代碼,58,abstract 修飾符 2-2,59,課堂練習(xí),2. P83 例3.14,60,構(gòu)造方法,每當(dāng)創(chuàng)建類的對(duì)象時(shí)就調(diào)用的方法 與類同名,但沒有返回類型 Java 為對(duì)象分配內(nèi)存,初始化實(shí)例變量并調(diào)用構(gòu)造方法 兩種構(gòu)造方法 參數(shù)化構(gòu)造方法 隱式構(gòu)造方法,61,參數(shù)化構(gòu)造方法的示例,class Sdate int month; int day; int year; Sdate(int m,int d,int y) month=m; day=d; year=y; System.out.println(“日期是 “ + m + “/“ + d + “/“ + y + “.“); public static void main(String args) Sdate S1,S2; S1=new Sdate(5,27,2009); S2=new Sdate(8,8,2008); ,62,隱式構(gòu)造方法的示例,class Sdate int month=5; int day=27; int year=2009; public static void main(String args ) Sdate S1; S1=new Sdate(); ,63,1.定義年、月、日三個(gè)變量; 2.定義一個(gè)構(gòu)造方法,給三個(gè)變量賦初值; 3.定義main方法,輸出今天的日期。,構(gòu)造方法練習(xí),64,在一個(gè)方法的定義過程中又調(diào)用自身的方法稱為遞歸方法。 例如:計(jì)算N!的定義如下 1 (當(dāng)N=0 時(shí)) N!= N*(N-1)! (當(dāng)N0時(shí)),遞歸方法,65,圖3.5 求4!的遞歸過程,遞歸方法示例,66,成員方法的遞歸引用就是指在一個(gè)方法中直接或間接引用自身的情況。 例如:,int f1(int n) int p; p=f1(n-1) return p; ,遞歸方法示例,67,int f1(int n) int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 5歲小孩常見病與護(hù)理
- 投行法律培訓(xùn)
- 端午邀約活動(dòng)課件
- 護(hù)理新生培訓(xùn)
- 早產(chǎn)的病因及護(hù)理
- 名著導(dǎo)讀艾青詩選
- 礦業(yè)采礦培訓(xùn)課件
- 新時(shí)代教育評(píng)價(jià)改革總體方案
- 腫瘤并發(fā)癥感染
- 銀行風(fēng)險(xiǎn)案例培訓(xùn)
- DB3212-T 1162-2024 學(xué)校集體用餐配送單位檢驗(yàn)室能力建設(shè)規(guī)范
- 2024年河南焦作中考生物試題及答案1
- 醫(yī)院培訓(xùn)課件:《導(dǎo)管相關(guān)靜脈血栓形成專家共識(shí)》
- 帆船理論培訓(xùn)課程設(shè)計(jì)
- 《有機(jī)化學(xué)》課程說課
- 2024直驅(qū)透平有機(jī)朗肯循環(huán)低溫余熱發(fā)電機(jī)組技術(shù)規(guī)范
- 銀行案防工作專題會(huì)上發(fā)言材料范文
- 原紙購(gòu)銷授權(quán)書
- 閱讀社團(tuán)備課
- 2023-2024學(xué)年四川省德陽市七年級(jí)(下)期末數(shù)學(xué)試卷(含解析)
- 2024年中華人民共和國(guó)企業(yè)所得稅年度納稅申報(bào)表(帶公式)20240301更新
評(píng)論
0/150
提交評(píng)論