chapter3面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第1頁(yè)
chapter3面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第2頁(yè)
chapter3面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第3頁(yè)
chapter3面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第4頁(yè)
chapter3面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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、第3章 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)1本章主要內(nèi)容3.1 面向?qū)ο蟮幕靖拍?.2 類與對(duì)象3.3 對(duì)象3.4 面向?qū)ο筇匦?.5 接口和包23.1 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο缶褪且詫?duì)象及其行為為中心,來(lái)考慮并處理問(wèn)題的思想體系和方法。對(duì)象、類、封裝、繼承、多態(tài)31、對(duì)象的基本概念對(duì)象對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。現(xiàn)實(shí)世界中的對(duì)象有兩個(gè)共同特征:形態(tài)和行為。 如:汽車對(duì)象在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象是一些相關(guān)變量和方法的集合。變量用于描述對(duì)象的“形態(tài)”,方法描述了對(duì)象的行為。4對(duì)象及對(duì)象的計(jì)算機(jī)描述52、類的基本概念對(duì)象是一個(gè)具體的事物,而類則是指一類事物。具體的某

2、輛汽車是一個(gè)對(duì)象,所有的汽車共同構(gòu)成了汽車類。類是一個(gè)抽象的概念。它對(duì)對(duì)象共性的抽象。由類來(lái)確定具體對(duì)象的過(guò)程稱為類的實(shí)例化,類的實(shí)例化的結(jié)果就是對(duì)象。6類用class作為它的關(guān)鍵字,例如:要?jiǎng)?chuàng)建一個(gè)汽車類,則可表示為:7通過(guò)類創(chuàng)建對(duì)象-類的實(shí)例化通過(guò)汽車類可以來(lái)創(chuàng)建一個(gè)轎車對(duì)象,并使用它的剎車行為方法時(shí),則要用下面的格式進(jìn)行實(shí)例化:汽車轎車= new 汽車( ) ;轎車.剎車( ) ;83.2 類與對(duì)象類和對(duì)象是Java的核心和本質(zhì)。它們是Java語(yǔ)言的基礎(chǔ)。編寫一個(gè)Java程序,在某種程度上來(lái)說(shuō)就是定義類和創(chuàng)建對(duì)象。定義類和建立對(duì)象是Java編程的主要任務(wù)。93.2.1 定義類類是Java

3、程序的基本要素。本節(jié)介紹如何創(chuàng)建一個(gè)類。101、類的一般形式類由類聲明和類體組成,而類體又由成員變量和成員方法組成。11Hello類122、類聲明類聲明由四部分組成:類修飾符、類關(guān)鍵字class、聲明父類、實(shí)現(xiàn)接口,其一般形式如下:publicabstract|final class 類名 extends 父類名 implements 接口列表 13類的組成說(shuō)明(1)類修飾符public:這個(gè)public關(guān)鍵字聲明了類可以在其他類中使用。缺省時(shí),該類只能被同一個(gè)包中的其他類使用。abstract:聲明這個(gè)類為抽象類,即這個(gè)類不能被實(shí)例化。final:聲明該類不能被繼承,即不能有子類。也就是說(shuō),

4、不能用它通過(guò)擴(kuò)展的辦法來(lái)創(chuàng)建新類。14類的組成說(shuō)明(2)類的關(guān)鍵字class在類聲明中,class是聲明類的關(guān)鍵字,表示類聲明的開始,類聲明后面跟著類名,按習(xí)慣類名要用大寫字母開頭,并且類名不能用阿拉伯?dāng)?shù)字開頭。給類名命名時(shí),最好取一個(gè)容易識(shí)別且有意義的名字,避免A、B、C之類的類名。15類的組成說(shuō)明(3)聲明父類extends聲明該類的父類,這表明該類是其父類的子類。一個(gè)子類可以從它的父類繼承變量和方法。extends只能實(shí)現(xiàn)單繼承。創(chuàng)建子類格式:class Bus extends Auto 16類的組成說(shuō)明(4) 實(shí)現(xiàn)接口在類聲明中使用關(guān)鍵字implements實(shí)現(xiàn)接口,當(dāng)要實(shí)現(xiàn)有多個(gè)接口

5、時(shí),各接口名以逗號(hào)分隔,其形式為: implements 接口1,接口2,,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒(méi)有變量和方法的實(shí)現(xiàn)。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,以某種程度實(shí)現(xiàn)“多繼承”。 17public class MyApplet extends Applet implements ActionListener 183、成員變量和局部變量19(1)成員變量 最簡(jiǎn)單的成員變量聲明的一般形式為: public|protected|privatestaticfinaltransientvolatile 類型 變量名;(2)局部變量在方法中聲明的變量以及方法中的參數(shù)稱為局部

6、變量。 (3)如果局部變量名與成員變量名相同,則成員變量被屏蔽。20成員變量與局部變量21局部變量名與成員變量名相同,在局部變量作用域內(nèi)成員變量被屏蔽22類的框架233.2.2 成員方法在Java語(yǔ)言中,必須通過(guò)方法才能完成對(duì)類和對(duì)象的屬性操作。成員方法只能在類的內(nèi)部聲明并加以實(shí)現(xiàn)。一般在類體中聲明成員變量之后再聲明成員方法。241、方法聲明返回類型方法名(形式參數(shù)) 方法體內(nèi)容 25(1)方法名方法聲明包括方法修飾符、返回類型、方法名和形式參數(shù)。 (2)方法體 方法體是一對(duì)大括號(hào)“”之間的內(nèi)容。26實(shí)現(xiàn)求圓的面積的類27完整的源程序CalculateCircle.java28方法重載方法重載

7、是指多個(gè)方法享有相同的名字,但是這些方法的參數(shù)必須不同,或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)類型不同。返回類型不能用來(lái)區(qū)分重載的方法。29求平面、空間點(diǎn)class GetDistance double d; public double distance(double x,double y) d=Math.sqrt(x*x+y*y); return d; public double distance(double x,double y,double z) d=Math.sqrt(x*x+y*y+z*z); return d; 303.3 對(duì)象類是一個(gè)抽象的概念,而對(duì)象是類的具體化。類通過(guò)實(shí)例化生成對(duì)

8、象。一個(gè)對(duì)象的生命周期包括三個(gè)階段: 創(chuàng)建、使用和釋放。311、對(duì)象的創(chuàng)建(1) 對(duì)象聲明:類名 對(duì)象名; (2) 實(shí)例化: 對(duì)象名 = new 構(gòu)造方法(參數(shù)列表); ;創(chuàng)建對(duì)象的一般格式為:類名 對(duì)象名 = new 類名(參數(shù)列表);322、對(duì)象的使用類是不能直接使用的,我們只能類實(shí)例化后的對(duì)象。對(duì)象的使用是通過(guò)訪問(wèn)對(duì)象變量或調(diào)用對(duì)象方法。通過(guò)運(yùn)算符“.”可以實(shí)現(xiàn)對(duì)對(duì)象的變量訪問(wèn)和方法的調(diào)用。33(1) 訪問(wèn)對(duì)象的變量訪問(wèn)格式: 對(duì)象名.成員變量 例如:設(shè)有一個(gè)A類其結(jié)構(gòu)如下: class A int x;對(duì)變量x賦值,先創(chuàng)建并實(shí)例化類A的對(duì)象a,然后再通過(guò)對(duì)象給變量x:A a = new

9、 A(); A b =new A();a.x=5; b.x=4;34(2) 調(diào)用對(duì)象的方法 調(diào)用格式:對(duì)象名.方法名(參數(shù)列表); 35例:計(jì)算長(zhǎng)方體的體積創(chuàng)建長(zhǎng)方體類(Rect),定義計(jì)算長(zhǎng)方體體積的方法(getVolume()在主類中創(chuàng)建長(zhǎng)方體類對(duì)象,調(diào)用對(duì)象的計(jì)算長(zhǎng)方體體積的方法3637383.4 面向?qū)ο筇匦苑庋b繼承多態(tài)39封裝封裝就是將對(duì)象抽象得到的數(shù)據(jù)(變量或常量)和行為(方法)相結(jié)合,形成一個(gè)有機(jī)的整體,也就是將數(shù)據(jù)與數(shù)據(jù)之上的操作進(jìn)行有機(jī)的結(jié)合,形成“類”,其中數(shù)據(jù)和方法都是類的成員。40類成員的修飾符訪問(wèn)控制修飾符:控制類及類的方法和變量的訪問(wèn)權(quán)限,只向使用者暴露接口,隱藏實(shí)

10、現(xiàn)細(xì)節(jié)。public:可被任何類所訪問(wèn)。protected:可在該類、該類的子類及同一個(gè)包中的類所訪問(wèn)。默認(rèn)修飾符:可被該類及同一個(gè)包中的類所訪問(wèn)。private:只能在該類中可以訪問(wèn)。頂層類只有默認(rèn)或公開級(jí)別,因此不能用private和protected來(lái)修飾。41static修飾符:static變量:靜態(tài)變量在內(nèi)存中只有一個(gè)拷貝。靜態(tài)變量能被類的該類所有對(duì)象共享,作為對(duì)象之間的共享數(shù)據(jù)。而實(shí)例變量每創(chuàng)建一個(gè)實(shí)例,就分配一次內(nèi)存,而且互不影響。static方法:靜態(tài)方法中不能使用this關(guān)鍵字,也不能直接訪問(wèn)所屬類的實(shí)例變量和實(shí)例方法,只能直接訪問(wèn)所屬類的靜態(tài)變量和靜態(tài)方法。靜態(tài)方法不能被定

11、義為抽象方法,必須實(shí)現(xiàn)。42final修飾符:final修飾的類不能被繼承,沒(méi)有子類final修飾的方法不能被子類的方法覆蓋final修飾的變量表示常量,只能被賦一次值43abstract修飾符:用來(lái)修飾類和成員方法。抽象類不能被實(shí)例化,抽象類中可以沒(méi)有抽象方法,但包含了抽象方法的類必須被定義為抽象類。如果子類沒(méi)有實(shí)現(xiàn)父類中所有的抽象方法,那么子類也必須被定義為抽象類。抽象類及抽象方法不能被final修飾符修飾。抽象方法只有方法的聲明,沒(méi)有具體的實(shí)現(xiàn)。44abstract class Sp abstract double getArea();Class Rect extends Sp doub

12、le width,height; Rect(double w,double d) width=w; height=h; double getArea() return width*height; 45繼承繼承表示了類之間的關(guān)系,它使得某類對(duì)象可以繼承另外一類對(duì)象的成員。若類B繼承類A,則類B的對(duì)象便具有類A的全部或部分性質(zhì)(數(shù)據(jù))和功能(方法),我們稱被繼承的類A為基類、父類或超類,繼承類B為類A的派生類或子類。Java語(yǔ)言中的類都是直接或間接繼承java.lang.Object類而得到的。46子類的定義class SuperClass class SubClass extends Super

13、Class 474849成員變量的隱藏和方法的重寫子類中定義了與父類中同名的成員變量,父類中的成員變量會(huì)被隱藏。子類可以重寫父類中的成員方法(重寫的是方法體,而方法的聲明部分應(yīng)相同)。50子類中的變量x隱藏了父類中的變量x子類重寫了父類中的方法5152子類訪問(wèn)父類中被隱藏的變量和被重寫的方法訪問(wèn)父類中被隱藏的成員變量super.變量名訪問(wèn)父類中被重寫的方法super.方法名(參數(shù)列表)調(diào)用父類的構(gòu)造方法super(參數(shù)列表)5354多態(tài)發(fā)送消息給某個(gè)對(duì)象,讓該對(duì)象自行決定響應(yīng)何種行為。編譯時(shí)多態(tài):方法的重載運(yùn)行時(shí)多態(tài):子類繼承父類的成員,子類對(duì)象可以作為父類對(duì)象來(lái)使用。553.5 接口和包 5

14、63.5.1接口接口的關(guān)鍵字是interface。在接口體中只包含常量和方法的聲明,而沒(méi)有變量和具體方法的實(shí)現(xiàn)。571、 接口的定義接口的定義包括接口聲明和接口體。接口定義的格式如下:public interface 接口名extends 父接口名 583.5.2包 包是命名空間機(jī)制,也是訪問(wèn)控制機(jī)制。 Java通過(guò)包,將Java類庫(kù)命名空間分隔成很多獨(dú)立的小塊,一組相關(guān)的類和接口存放在一個(gè)獨(dú)立的包內(nèi),從而和其它包中的類或接口區(qū)分開。59package和import語(yǔ)句import用于引用包的類。若要引用一個(gè)包中的多個(gè)類,就用 * 號(hào)代替。import 包名1.包名2. .包名n.類名或接口名

15、;import java.applet.Applet;import java.io.*;package 用于指出class文件路徑。package class文件路徑;60包的使用建立和包同名的目錄。包和文件系統(tǒng)目錄一一對(duì)應(yīng),有一個(gè)包,就有一個(gè)和其對(duì)應(yīng)的文件系統(tǒng)目錄。包內(nèi)的所有類或接口都必須在與包同名的目錄下。 在類或接口所在文件的最前面聲明類或接口所在的包。包的聲明格式:package 包名1.包名2.包名n;61引用包通過(guò)import將包引入程序中。import 包名1. .包名n.類名;import 包名1. .包名n.*;62Java自動(dòng)引入的包java.lang包,Java基本的語(yǔ)言

16、功能保存在這個(gè)包中。63a.Java編譯a.java會(huì)產(chǎn)生a.class 和 b.classb.Java64a.Java保存在當(dāng)前目錄。編譯a.java會(huì)產(chǎn)生a.class 和 b.classb.java保存在當(dāng)前目錄的ab目錄的xyz子目錄下。653.5.3 壓縮文件將類壓縮為jar文件在Java工具集bin目錄下的jar.exe,它可以把多個(gè)類的字節(jié)碼文件打包壓縮成一個(gè)jar文件,然后將這個(gè)jar文件存放到Java運(yùn)行環(huán)境的擴(kuò)展框架中,即將該jar文件存放在JDK安裝目錄的jrelibext下,這樣,其他的程序就可以使用這個(gè)jar文件中的類來(lái)創(chuàng)建對(duì)象了。66設(shè)有Test1.class和Te

17、st2.class,將它們壓縮成一個(gè)jar文件Test.jar。 (1)編寫Manifest.mf清單文件MainfestVersion: 1.0Main-Class: Test1 Test2(注意Main-Class:與后面的類名之間要有一個(gè)空格,且最后一行要回車換行)。將其保存為Manifest.mf。 67(2)生成jar文件jar cfm Test.jar Manifest.mf Test1.class Test2.class其中參數(shù)c表示要生成一個(gè)新的jar文件,f表示要生成的jar文件的文件名,m表示清單文件的文件名。 68應(yīng)用程序壓縮為jar文件我們還可以用jar.exe將應(yīng)用程序生成可執(zhí)行文件。在Windows環(huán)境下,我們可用鼠標(biāo)雙擊該文

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論