版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計-JAVA,第三章 類與對象,面向?qū)ο?OOD)基本概念,抽象封裝類對象,抽象,所謂抽象就是舍棄被研究對象中個別的、非本質(zhì)的、或與研究主題無關(guān)的次要特征,而抽取與研究有關(guān)的特征,形成對所研究對象正確的、簡明扼要的認識。,,封裝,封裝也稱為信息隱藏,是指利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,使其構(gòu)成一個不可分割的獨立實體,數(shù)據(jù)被保護在抽象數(shù)據(jù)的內(nèi)部,盡可能隱藏內(nèi)部細節(jié),只保留一些外部接口使之與外部發(fā)生聯(lián)系
2、。,,對象,客觀世界是由一些具體的事物構(gòu)成的,每個事物一般都有自己的一組靜態(tài)特征和動態(tài)特征。把客觀世界的這一事實映射到面向?qū)ο蟪绦蛟O(shè)計中,就把客觀事物抽象成為了對象(object)。在面向?qū)ο蟪绦蛟O(shè)計中,對象具有如下特性:對象標識靜態(tài)特征(屬性)動態(tài)特征(方法),,類,對象是對具體某個事物的抽象,而類則是對對象的抽象與歸納,即把具有相同特征的一組對象歸納成一類。分類所依據(jù)的原則就是抽象。,,JAVA中的類,類是面向?qū)ο蟪绦蛟O(shè)計(
3、OOD)的基礎(chǔ),是Java的核心和本質(zhì)所在。在Java中,所有的語言元素都必須被封裝在類中。Java程序是由一個個類定義組成的,編寫Java程序的過程實際就是從現(xiàn)實世界中抽象出Java可實現(xiàn)的類并用合適的語句定義它們的過程,這個定義過程包括對類內(nèi)各種屬性和方法的定義,創(chuàng)建類的對象,也包括類間的各種關(guān)系和接口的定義。JAVA語言中的類實際包括兩種:系統(tǒng)定義的類用戶自己定義的類,系統(tǒng)定義的類,JAVA系統(tǒng)定義好的類,根據(jù)實現(xiàn)的功能的
4、不同,劃分為不同的集合—包,所有的包合稱為類庫。要在程序中使用某個系統(tǒng)類,必須使用import語句引入該類所在的包。 如:import java.awt.*; import java.applet.*;,用戶自定義的類,系統(tǒng)定義的類主要是實現(xiàn)一些常用的基本功能,但是一些具體的問題還是需要用戶通過編寫自己的類來解決。因此,JAVA程序設(shè)計的過程實際就是用戶把客觀世界的問題定義為自己的類來解決的過程。,定義一
5、個簡單的類,一個簡單的類people class people { String gender; float height; float weight; }注意:類聲明只是創(chuàng)建一個模板(或類型描述),它并不會創(chuàng)建一個實際的對象,因此,上述代碼不會生成任何people類型的對象實體。,創(chuàng)建對象,用前面定義的people類創(chuàng)建一個對象lilyJAVA中使用new關(guān)鍵
6、字創(chuàng)建對象,對象的創(chuàng)建可以使用以下兩種方式:people lily; lily=new people();people lily=new people();以上語句執(zhí)行后,lily就是people的一個對象(實例);它將具有“存儲意義上”的真實性。,對象的初始化,所謂對象的初始化就是為這個對象的數(shù)據(jù)成員賦初值。,lily.gender=“girl”;lily.height=1.6f;lily.weight=45.0
7、f;,使用對象,當一個對象被創(chuàng)立后,這個對象就擁有了自己的數(shù)據(jù)成員和方法,我們可以通過引用對象的數(shù)據(jù)成員來使用對象。,以前面創(chuàng)建的對象lily為例:System.out.println(“l(fā)ily is a :”+llily.gender);System.out.println(“l(fā)ily身高:”+llily.heght+“m”);System.out.println(“l(fā)ily體重:”+llily.weight+“kg”);,使
8、用對象,對象的數(shù)據(jù)成員、對象的方法的引用方式如下:,對象名.成員名 如:lily.height;對象名.方法名(參數(shù)表) 如:lily.run();,類的定義,類的基本定義方法如下:,[修飾符] class 類名 [extends 父類] [implements 接口名] { 類成員變量聲明 類方法聲明 },1、關(guān)于類頭—class,class關(guān)鍵字,在它的后面跟新定義的
9、類的類名。父類名跟在extends關(guān)鍵字后面,用來說明當前類是哪個已經(jīng)存在類的子類,存在繼承關(guān)系—繼承是類與類之間的一種非常重要的關(guān)系。,1、關(guān)于類頭—類的修飾符,類的修飾符用于定義對該類的訪問級別,通常有public、final、abstract等。,1、關(guān)于類頭—接口名,接口名跟在implements關(guān)鍵字后面,用來說明當前類中實現(xiàn)了哪個接口定義的功能和方法。接口是Java語言用來實現(xiàn)多重繼承的一種特殊機制,我們將在后面詳細介紹它
10、的使用方法。,2、關(guān)于類體,類體的定義要包括類的具體內(nèi)容,包括類的屬性與方法。,[修飾符] class 類名 [extends 父類] [implements 接口名] { 類成員變量聲明 類方法聲明 },構(gòu)造方法,創(chuàng)建對象后,通常要為對象賦初值—即對象的初始化,為簡化這一步操作,JAVA提供了一種特殊的方法—構(gòu)造方法。,構(gòu)造方法實例,class people{ float height; floa
11、t weight; people(float aheight,float aweight) { height=aheight; weight=aweight; }}public class sample{ public static void main(String args[]) { people lily=new people(1.60f,45.0f); System.out
12、.println("lily's height is:"+lily.height+"m"); System.out.println("lily's weight is:"+lily.weight+"kg"); }},構(gòu)造方法的特點,構(gòu)造方法的方法名與類名相同。不能對構(gòu)造方法指定返回類型,系統(tǒng)指定了隱含返回類型。構(gòu)造方法不能由
13、編程人員顯式地直接調(diào)用。在創(chuàng)建一個類的新對象的同時,系統(tǒng)會自動調(diào)用該類的構(gòu)造方法為新對象初始化,構(gòu)造方法總是和new運算符一起被調(diào)用。構(gòu)造方法和普通方法一樣,可以被重置—即一個類可以定義多個具有不同參數(shù)的構(gòu)造方法。一個類可以不定義構(gòu)造方法,但實際系統(tǒng)會為這個類定義一個缺省的構(gòu)造方法,這個構(gòu)造方法沒有任何參數(shù)和語句。構(gòu)造方法可以繼承。,構(gòu)造方法的重置實例,class people{ float height; float
14、 weight; String gender; people(float aheight,float aweight) { height=aheight; weight=aweight; } people(float aheight,float aweight,String agender) { height=aheight; weight=aweight; gender=
15、agender; }}public class gouzao{ public static void main(String args[]) { people lily=new people(1.60f,45.0f); people jack=new people(1.70f,60.0f,"boy"); System.out.println("lily's
16、height is:"+lily.height+"m"); System.out.println("lily's weight is:"+lily.weight+"kg"); System.out.println("jack's height is:"+jack.height+"m");
17、System.out.println("jack's weight is:"+jack.weight+"kg"); System.out.println("jack's weight is a "+jack.gender); }},構(gòu)造方法的作用,對象初始化引入更多的靈活度(變量賦值或更復(fù)雜的操作),類的修飾符—訪問控制,缺省訪問控制publi
18、cprotectedfinalabstract,類的修飾符—缺省訪問控制,缺省訪問控制(無修飾符),該類只能被同一個包中的類訪問和引用,而不可以被其他包中的類使用,這種訪問特性又稱為包訪問性。同樣類內(nèi)的變量和方法如果沒有訪問控制符來限定,也就具有包訪問性。JAVA規(guī)定:同一個程序文件中的所有類屬于一個包。,,類的修飾符—public,public(公共的),用public修飾的類稱為公共類,公共類不但可以供它同一個包內(nèi)的類使用,
19、還可供其他包中的類使用。,,類的修飾符—protected,protected(受保護的),用protected修飾的類稱為保護類,保護類的成員變量可以被三種類所引用:該類自身、與它在同一個包中的其它類、在其他包中的該類的子類。使用protected修飾符的主要作用是允許其他包中該類的子類來訪問父類的特定屬性。,,類的修飾符—final,final(最終的),用final修飾的類稱為最終類,最終類是不能被其他類繼承的。,,類的修飾符—a
20、bstract,abstract(抽象的),用abstract修飾的類稱為抽象類—聲明方法的存在而不去具體實現(xiàn)其功能的類,它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況。[實例]不能使用abstract類創(chuàng)建對象。 用abstract修飾的方法表示抽象方法,抽象方法沒有方法體。抽象類可以沒有抽象方法,但有抽象方法的類必須定義為抽象類。如果一個子類繼承一個抽象類,子類又沒有實現(xiàn)父類的所有抽象方
21、法,那么子類也要定義為抽象類,否則編譯會出錯的。final和abstract不能同時修飾一個類。,,JAVA數(shù)據(jù)成員,JAVA中的數(shù)據(jù)成員即常說的變量,為了方便區(qū)分,我們將類中描述研究對象靜態(tài)特征的變量稱為成員變量,將成員方法中定義的變量稱為局部變量。數(shù)據(jù)成員的聲明:(參見第二章),[修飾符] 變量類型 變量名[=變量初值];,數(shù)據(jù)成員的修飾符—訪問控制,publicprivateprotectedstaticfinal,數(shù)
22、據(jù)成員的修飾符—public,公共的變量。,,數(shù)據(jù)成員的修飾符—private,用private修飾的屬性或方法只能被該類自身所訪問和修改,而不能被任何其他類(包括該類的子類),來獲取和引用。,,數(shù)據(jù)成員的修飾符—protected,protected成員可以被該類的成員以及其子類的成員訪問,它還可以被同一個包內(nèi)的其他類的成員訪問。,,數(shù)據(jù)成員的修飾符—static,通常情況下,類的成員必須通過它的類的對象訪問,但是可以使用static
23、創(chuàng)建一個成員,它能被它自己使用,而不必引用特定的實例。說明:聲明為static的變量為全局變量。static變量被保存在類的公共存儲單元中,而不是保存在該類某個對象的內(nèi)存儲區(qū)中,因此,該類的任何一個對象訪問該變量得到的將是相同的值。,,例:class sp{ static int n=10;}public class sample{ …… sp.n=sp.n+1; ……},靜態(tài)初始化器,靜態(tài)初始化器是由關(guān)鍵字
24、static引導(dǎo)的一對大括號括起的語句組。作用是初始化類的靜態(tài)數(shù)據(jù)成員。,例:static int a;static{ a=10;},數(shù)據(jù)成員的修飾符—final,用final修飾的數(shù)據(jù)成員稱為最終數(shù)據(jù)成員,其值在整個程序的執(zhí)行過程中是不能改變的—標識符常量,最終數(shù)據(jù)成員可以在申明時進行初始化,也可通過構(gòu)造方法進行賦值,但不能在程序的其他部分賦值。,,JAVA成員方法,JAVA中的成員方法與其他成員設(shè)計語言中的函數(shù)概念相等,也叫成
25、員函數(shù),是具有某種獨立功能的程序模塊。JAV中的方法包括:系統(tǒng)成員方法用戶自定義成員方法,系統(tǒng)類成員方法,如:public void paint(Graphics g);System.out.print();,方法的聲明,Java中聲明方法的語法如下: [修飾符] 返回值類型 方法名(參數(shù)列表) throws 例外名1,例外名2,… {方法體: 局部變量聲明; 語句序列; },J
26、AVA的成員方法用來規(guī)定類屬性上的操作,實現(xiàn)類的內(nèi)部功能的機制,同時也是類與外界進行交互的重要窗口。,一個簡單的方法實例,求兩整數(shù)之和:int add(int a,int b){ int c; c=a+b; retuen c;},方法的修飾符,public privateprotectedfinalstaticabstractnative,方法的返回值,JAVA程序的方法可以返回任何合法有效的類型,包括創(chuàng)建
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《面向?qū)ο蟪绦蛟O(shè)計(java)》
- java面向?qū)ο蟪绦蛟O(shè)計教案
- java-面向?qū)ο蟾呒壋绦蛟O(shè)計
- java面向?qū)ο蟪绦蛟O(shè)計習(xí)題集
- 《面向?qū)ο蟪绦蛟O(shè)計》課程設(shè)計---java日歷
- 《面向?qū)ο蟪绦蛟O(shè)計》課程設(shè)計java日歷
- java語言與面向?qū)ο蟪绦蛟O(shè)計課后習(xí)題答案
- 《面向?qū)ο蟪绦蛟O(shè)計》
- 面向?qū)ο蟪绦蛟O(shè)計(java)課程教學(xué)大綱
- java課程設(shè)計--java面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計
- 第1章java語言與面向?qū)ο蟮某绦蛟O(shè)計
- 面向?qū)ο蟪绦蛟O(shè)計實驗
- 實驗 面向?qū)ο蟪绦蛟O(shè)計
- 《面向?qū)ο蟪绦蛟O(shè)計》 考試
- 面向?qū)ο蟪绦蛟O(shè)計報告
- 面向?qū)ο蟮某绦蛟O(shè)計
- 面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)
- 面向?qū)ο蟪绦蛟O(shè)計java復(fù)習(xí)題集
- 面向?qū)ο蟮某绦蛟O(shè)計(java)做簡易圖畫板
- 《java面向?qū)ο蟪绦蛟O(shè)計》第2版課后答案
評論
0/150
提交評論