第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第1頁
第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第2頁
第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第3頁
第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第4頁
第3章-面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章Java面向?qū)ο蟪绦蛟O(shè)計(jì)(上)

第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)本章學(xué)習(xí)目標(biāo)掌握J(rèn)ava面向?qū)ο蟪绦蛟O(shè)計(jì)方法利用面向?qū)ο笤O(shè)計(jì)方法解決實(shí)際問題第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)1:一個(gè)簡單的類對象【任務(wù)內(nèi)容】設(shè)計(jì)一個(gè)音樂播放器類,并創(chuàng)建一個(gè)對象?!灸芰δ繕?biāo)】掌握面向?qū)ο蟪绦蛟O(shè)計(jì)方法掌握創(chuàng)建類的基礎(chǔ)語法掌握類對象的創(chuàng)建學(xué)會(huì)用面向?qū)ο笤O(shè)計(jì)思想解決實(shí)際問題3.1類和對象第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)【范例3-1】設(shè)計(jì)一個(gè)媒體播放器類

classMediaPlayer{ //音樂文件路徑

publicStringmusicFile; //播放器音量,范圍:0(靜音)~100 publicintsoundLevel; //播放器狀態(tài)

publicbooleanisPlaying; }第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)classMediaAppExam{//主程序

publicstaticvoidmain(Stringargs[]){//用MediaPlayer類創(chuàng)建播放器對象mplayerMediaPlayermplayer=newMediaPlayer(); //設(shè)定播放器內(nèi)部的屬性值

mplayer.musicFile="spring.mp3"; mplayer.soundLevel=50; mplayer.isPlaying=false;} }第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)

結(jié)構(gòu)化的軟件開發(fā)方法

結(jié)構(gòu)化的軟件開發(fā)方法是20世紀(jì)80年代使用最廣泛的軟件開發(fā)方法。它主要依據(jù)功能來劃分軟件的結(jié)構(gòu),它把軟件系統(tǒng)的功能看做是根據(jù)給定的輸入數(shù)據(jù),然后輸出結(jié)果。 進(jìn)行結(jié)構(gòu)化設(shè)計(jì)時(shí),首先考慮整個(gè)軟件的功能,然后對功能進(jìn)行分解,將軟件劃分為多個(gè)模塊,每個(gè)模塊實(shí)現(xiàn)子功能(但功能不是一成不變的)。模塊內(nèi)部還可以進(jìn)一步細(xì)分,最后將所有的模塊拼裝起來構(gòu)成整個(gè)軟件系統(tǒng)。軟件系統(tǒng)可以看做多個(gè)子系統(tǒng)的集合。 結(jié)構(gòu)化設(shè)計(jì)屬于自頂向下的設(shè)計(jì),在設(shè)計(jì)階段就需要考慮如何實(shí)現(xiàn)系統(tǒng)功能,因?yàn)榉纸夤δ艿倪^程實(shí)際就是實(shí)現(xiàn)功能的過程。其局限性在于不能適應(yīng)用戶需求的不斷變化,系統(tǒng)結(jié)構(gòu)會(huì)根據(jù)需求變化而變化。 結(jié)構(gòu)化程序設(shè)計(jì)中,方法是最小的功能模塊。每個(gè)方法都是一個(gè)具有輸入輸出的子系統(tǒng)。預(yù)備知識(shí)----程序設(shè)計(jì)方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)

面向?qū)ο蟪绦蛟O(shè)計(jì)

面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-OrientedProgramming簡稱OOP)是當(dāng)今主流的程序設(shè)計(jì)方法,它將軟件系統(tǒng)看做各種對象的集合,每個(gè)對象包含對用戶公開的特定功能部分和隱藏的實(shí)現(xiàn)部分。對象是最小的子系統(tǒng),一組對象能夠組合成復(fù)雜的子系統(tǒng)。 程序中的很多對象來自于標(biāo)準(zhǔn)庫,還有一些是自定義的。究竟是自己構(gòu)造對象,還是使用外部對象(可以是免費(fèi)的,也可以是商業(yè)的)完全取決于預(yù)算和時(shí)間。但只要能夠?qū)崿F(xiàn)功能,完全可以不必關(guān)系其實(shí)現(xiàn)的細(xì)節(jié)。 傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)通過一系列的過程(即算法)來解決問題,然后考慮存儲(chǔ)數(shù)據(jù)的方式(即如何組織數(shù)據(jù)),而面向?qū)ο髣偤孟喾础?對于較小規(guī)模的問題使用結(jié)構(gòu)化設(shè)計(jì)比較理想,而面向?qū)ο笤O(shè)計(jì)更適合解決規(guī)模較大的問題。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)OOP的邏輯過程面向?qū)ο笤O(shè)計(jì)分析的完整過程如圖所示:現(xiàn)實(shí)域抽象抽象類對象實(shí)例化映射抽象數(shù)據(jù)類物理實(shí)體邏輯實(shí)現(xiàn)概念域計(jì)算機(jī)世界第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)面向?qū)ο缶哂幸韵聨讉€(gè)重要特征:抽象封裝與隱藏繼承多態(tài)性

33313234第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)面向?qū)ο蟮幕靖拍顚ο?Object)是一個(gè)應(yīng)用系統(tǒng)中用來描述客觀事物的實(shí)體,是具有特定屬性(數(shù)據(jù))和行為(方法)的基本運(yùn)行單位,是類的一個(gè)特定狀態(tài)下的實(shí)例。類(Class)是Java代碼的基本組織模塊,是用以描述一組具有共同屬性和行為的對象的基本原型,是對這組對象的概括、歸納與抽象表達(dá),它定義了本類對象所應(yīng)擁有的狀態(tài)屬性集及操作這組屬性的行為方法集。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)類與對象的關(guān)系類與對象之間的關(guān)系,類似于數(shù)據(jù)類型與變量之間的關(guān)系;一個(gè)類可以生成無數(shù)個(gè)不同的對象,每個(gè)對象屬性值不同,其狀態(tài)也不同??梢杂糜?jì)算機(jī)模型與計(jì)算機(jī)實(shí)體之間的關(guān)系來更形象地說明類與對象之間的關(guān)系:將馮·諾依曼計(jì)算機(jī)模型看作計(jì)算機(jī)類,則不同品牌的計(jì)算機(jī)實(shí)體就對應(yīng)為一個(gè)個(gè)的實(shí)例對象。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)OOP的優(yōu)越性從面向過程到面向?qū)ο笫浅绦蛟O(shè)計(jì)技術(shù)的一個(gè)飛躍。人們之所以要采用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),其目的在于:提升程序的開發(fā)與運(yùn)行效率提高代碼的可重用性(或者稱為復(fù)用性)按照與人類習(xí)慣思維方法一致的原則開發(fā)系統(tǒng)第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)OOP的優(yōu)越性(續(xù))提高程序的可靠性與可維護(hù)性提高程序的可擴(kuò)展性增強(qiáng)程序的可控制性總之,面向?qū)ο蟮某绦蛟O(shè)計(jì),能夠有效分解、降低問題的難度與復(fù)雜性,提高整個(gè)求解過程的可控制性、可監(jiān)視性和可維護(hù)性,從而獲得較高的開發(fā)效率與可靠效果第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)創(chuàng)建類類是Java語言面向?qū)ο缶幊痰幕疽?,用來定義對象的成員變量(數(shù)據(jù)域)與成員方法(功能接口),描述對象的狀態(tài)與行為。Java程序?qū)⒛阋磉_(dá)的實(shí)體或概念封裝在類中,并由類來創(chuàng)建諸多的實(shí)例對象。應(yīng)用程序的功能便是由各個(gè)類的實(shí)例對象,通過調(diào)用各類方法來實(shí)現(xiàn)的。JAVA的類由類的聲明與類體兩部分組成。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)1、類的聲明用來指定該類的訪問修飾符、類的名稱、父類名稱及實(shí)現(xiàn)接口等屬性。聲明類的完整形式為:[public][abstract|final]class<類名>[extends<基類名>][implements<接口列表>]說明了類的屬性類名應(yīng)該能夠描述出類的特征或作用,類名的第一個(gè)字母通常要大寫,如果類名由多個(gè)單詞組成,則每一單詞的首字母一般都要大寫第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)2、類體:是類功能的主體,是JAVA語句的集合。一般要定義三類元素:成員變量;構(gòu)造方法;成員方法。語句塊界定符{及}標(biāo)識(shí)出類體的有效范圍。成員變量與成員方法為類的成員要素,簡稱為成員(Member),它們又分為靜態(tài)/類要素與對象/實(shí)例要素兩類。構(gòu)造方法是具有與類名相同名稱的一種特殊方法,用來創(chuàng)建類的對象及對成員變量進(jìn)行初始化。構(gòu)造方法為可選項(xiàng),當(dāng)省略時(shí),Java系統(tǒng)會(huì)按缺省方式定義空白的構(gòu)造方法。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)類定義示例【例】建立一個(gè)公共的最終類—日期類,其聲明格式如下:publicfinalclassDate//類的聲明語句{//類體定義

privateintyear;//年

privateintmonth;//月

privateintday;//日

publicinitDate(inty,intm,intd){……}//初始化年、月、日值的方法

publicshowDate(){……}//顯示當(dāng)前日期值的方法}第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)實(shí)例化對象類只是一種數(shù)據(jù)類型,需要實(shí)例化對象以后才能使用。類類型實(shí)例化對象需要由兩個(gè)步驟來完成,首先用類定義對象變量,然后通過實(shí)例化類的對象來初始化對象變量,即:類名稱對象變量;對象變量=new類名稱();

也可以一步完成,即:類名稱對象變量=new類名稱();第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)實(shí)例化對象(續(xù))一旦一個(gè)類的實(shí)例化對象產(chǎn)生,就可以通過該對象訪問類中定義的成員了。通過對象訪問成員的基本結(jié)構(gòu)如下:對象變量.屬性=值;對象變量.方法();第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)2---方法的定義【任務(wù)內(nèi)容】給任務(wù)1中的媒體播放器類增加控制方法【能力目標(biāo)】掌握方法定義學(xué)會(huì)用方法解決實(shí)際問題【任務(wù)分析】本案例要求在任務(wù)1案例中MediaPlayer類基礎(chǔ)上擴(kuò)充可控制播放器的方法。通過分析任務(wù)1的案例,我們可以得知,MediaPlayer類至少包含播放、暫停、調(diào)節(jié)音量等方法。范例3-2MediaAppExam.java3.2方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)2---方法定義(續(xù))成員方法(MemberMethod)又稱為功能接口(FunctionInterface),簡稱為方法(Method),是類對象與外界的接口,包含了理解和操縱對象狀態(tài)的代碼,反應(yīng)了對象的行為特征,特別是對屬性進(jìn)行操作的特征。成員方法對成員變量的操作主要體現(xiàn)在以下兩個(gè)方面:改變對象的屬性,一般記為set方法返回對象的屬性,一般記為get方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)方法定義格式如下:[public|protected|private][static][final|abstract][native][synchronized]<方法的返回類型><方法名>([參數(shù)列表])[throws<異常列表>]{//方法體定義

……//用于描繪方法行為的Java語句}訪問控制修飾符第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)3:靜態(tài)方法【任務(wù)內(nèi)容】設(shè)計(jì)一維數(shù)組工具類,包含數(shù)組復(fù)制,打印任務(wù)【能力目標(biāo)】掌握靜態(tài)方法的定義學(xué)會(huì)用靜態(tài)方法解決實(shí)際問題【任務(wù)分析】本案例要求設(shè)計(jì)一個(gè)針對一維數(shù)組做操作的工具類,這些方法對于所有一維數(shù)組來說是通用的。作為工具類,它只是包含了操作數(shù)組的方法,而與數(shù)組沒有任何直接關(guān)系。因此,在使用操作數(shù)組的方法時(shí)并不需要對工具類做實(shí)例化。那么如何才能在不實(shí)例化類對象的情況下訪問類內(nèi)部的方法呢?Java編程語言中靜態(tài)方法可以很好的解決上述問題。Java允許開發(fā)人員在一個(gè)類內(nèi)部定義直接通過類名稱訪問的靜態(tài)方法,而無需實(shí)例化類對象。3.2方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:Application.java通過上例,我們知道:static方法可以用類來直接調(diào)用,而無需用從類中實(shí)例化出來的具體對象來調(diào)用,因此這類方法被稱為類的方法。

注意:

static方法只能訪問類中的static屬性和其他的static方法。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)4:main方法【任務(wù)內(nèi)容】實(shí)現(xiàn)命令行計(jì)算器程序【能力目標(biāo)】了解Java程序的執(zhí)行掌握J(rèn)ava程序入口方法借助主程序入口參數(shù)解決實(shí)際問題【任務(wù)分析】命令行計(jì)算器就是用戶在命令行輸入要參加計(jì)算的兩個(gè)數(shù)和運(yùn)算符,然后程序參照用戶輸入的運(yùn)算符對兩個(gè)數(shù)進(jìn)行算術(shù)運(yùn)算,最終將運(yùn)算結(jié)果呈現(xiàn)給用戶。本案例要求程序在啟動(dòng)時(shí)接收用戶的輸入。那么,程序該如何實(shí)現(xiàn)在程序啟動(dòng)過程中傳遞用戶輸入呢?答案就是Java程序中的主方法main()。3.2方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:Calc.java在Java中,main()方法是Java應(yīng)用程序的入口方法,也就是說,程序在運(yùn)行的時(shí)候,第一個(gè)執(zhí)行的方法就是main()方法。main()方法與其他的方法有所不同,它在程序中有固定的語法聲明:publicstaticvoidmain(Stringargs[])第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)5:成員變量和局部變量【任務(wù)內(nèi)容】設(shè)計(jì)一個(gè)Person類,包含姓名、性別、年齡屬性,并通過方法訪問這些屬性?!灸芰δ繕?biāo)】掌握成員變量定義掌握局部變量定義掌握成員變量和局部變量的區(qū)別【任務(wù)分析】

該案例要求設(shè)計(jì)一個(gè)Person類,并且包含有姓名、性別和年齡三個(gè)屬性,屬性的訪問必須通過方法來完成。每個(gè)屬性的訪問包括讀和寫,所以Person類至少包含六個(gè)屬性分別對應(yīng)上述三個(gè)屬性的讀寫操作。其中寫屬性操作還需要外界提供一個(gè)參數(shù),作為被操作屬性的新值。3.3成員變量和局部變量第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:ApplicationDemo.java在上例中涉及到兩類變量:局部變量和成員變量局部變量:

1)局部變量是定義在方法體內(nèi)部的變量,包括方法圓括號(hào)中的參數(shù)在內(nèi)。局部變量有時(shí)被稱作自動(dòng)變量。局部變量存儲(chǔ)在棧內(nèi)存中,其生命周期從方法的執(zhí)行到方法方法的結(jié)束。

2)局部變量定義以后,必須進(jìn)行初始化。

3)局部變量只能在定義方法范圍內(nèi)使用

第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)成員變量:成員變量是定義在類當(dāng)中的變量,又稱為屬性(Attribute)或數(shù)據(jù)域(DataField),用以表述一個(gè)對象的狀態(tài)信息。成員變量跟隨對象一起存儲(chǔ)在堆內(nèi)存當(dāng)中,其生命周期從對象的實(shí)例化開始,直到對象被銷毀時(shí)消失。語法描述格式如下:[public|protected|private][static][final][transient][volatile]<類型><屬性名>[=初始值/new<構(gòu)造方法>>];第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)public、protected與private為成員要素訪問修飾符,用來限制成員變量或成員方法的訪問范圍,即哪些類或?qū)ο罂梢栽L問此成員要素。static用來指明成員要素為靜態(tài)要素,又稱類要素,以區(qū)別于對象要素。靜態(tài)要素存在于類的定義區(qū)域中,屬于類本身的成員,每個(gè)該類的對象共享這些要素final用于成員變量時(shí),是作為定義最終變量即常量的關(guān)鍵字。這類常量的值不允許修改。transient(意為短暫的、瞬時(shí)的)為專門用于成員變量的修飾符,表明成員變量為臨時(shí)變量。volatile(意為可變的、不穩(wěn)定的)為專門用于成員變量的修飾符,聲明一個(gè)被多個(gè)并發(fā)線程所共享的變量。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)在類實(shí)例化一個(gè)對象后,對象內(nèi)的所有成員變量已經(jīng)被初始化。成員變量默認(rèn)初始化規(guī)則如下:對象類型:默認(rèn)初始化為null整數(shù)類型:默認(rèn)初始化為0字符類型:默認(rèn)初始化為’\u0000’浮點(diǎn)類型:默認(rèn)初始化為0.0和0.0f邏輯類型:默認(rèn)初始化為false第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)6:訪問控制【任務(wù)內(nèi)容】修改任務(wù)2中的MediaPlayer播放器,限制外界任意訪問對象內(nèi)的屬性【能力目標(biāo)】了解Java封裝機(jī)制掌握J(rèn)ava訪問控制修飾符學(xué)會(huì)采用封裝機(jī)制解決實(shí)際問題【任務(wù)分析】本案例要求對任務(wù)2中的媒體播放器進(jìn)程改造,限制對象外部代碼對對象屬性的任意操作。任務(wù)2中,主程序是可以隨意通過mplayer對象去訪問內(nèi)部的任何屬性。一個(gè)對象內(nèi)部屬性可以被隨意修改是一個(gè)極其危險(xiǎn)的事情,它直接影響了對象的有效性。例如隨意設(shè)置音量屬性soundLevel為-1,從語法上,int類型的soundLevel是可以接受-1值得,但是從邏輯上,音量范圍是0~100,變量自身是無法控制其邏輯上的有效性的。3.4封裝第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:MediaAppDemo.java注意:類中的所有成員都可以被類自身的代碼訪問。為控制其他類的訪問權(quán)限,類成員有四種訪問修飾符。private:聲明為private的成員只能被包含它的類自身訪問default:包成員無任何訪問修飾符,它們只能被所在包中的類所訪問。protected:聲明為protected的成員可以被它的子類、同一個(gè)包中的類訪問。public:聲明為public的成員可以被任何類訪問。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)成員變量的訪問控制修飾符修飾符本類相同包中的不同類(包含子類)不同包中的子類不同包中的非子類public缺?。╬ackeage)××private×××protected×上述訪問控制修飾符主要用于定義成員的作用域,即可以在哪些范圍內(nèi)訪問其成員.第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)舉例1:

classClassA{privateintisPrivate;privatevoidprivateMethod(){System.out.println(“私有方法”);}}classClassB{voidaccessMethod(){ClassAa=newClassA();a.isPrivate=10;//非法

a.privateMethod();//非法}}第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)舉例2:classFieldTest{privateintnum=5;//私有作用域,本類可見

publicintget(){//公共作用域

returnnum;//返回成員變量num的值}}classTest{publicstaticvoidmain(String[]args){FieldTestft=newFieldTest();intt=ft.get();//正確訪問

//ints=ft.num;//不能訪問FieldTest類的私有成員變量

System.out.println(“t=“+t);//System.out.println(s);}}第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)7:構(gòu)造方法【任務(wù)內(nèi)容】創(chuàng)建一個(gè)按鈕類,保證其實(shí)例化的對象所有狀態(tài)初始都是有效的【能力目標(biāo)】掌握構(gòu)造方法的定義掌握用構(gòu)造方法初始化對象學(xué)會(huì)用構(gòu)造方法解決實(shí)際問題【任務(wù)分析】本案例要求設(shè)計(jì)一個(gè)按鈕類,并且按鈕類在實(shí)例化對象后,其內(nèi)部的狀態(tài)值應(yīng)該保持在有效狀態(tài)。實(shí)例化一個(gè)類的對象時(shí),對象內(nèi)部的狀態(tài)已經(jīng)被初始化為默認(rèn)值,但是這個(gè)默認(rèn)值并不是我們想要的,因?yàn)樗鼈儚倪壿嬌喜⒉皇怯行У?。我們該如何在?shí)例化對象的過程中將對象屬性初始化為符合對象自身特性的有效狀態(tài)呢?3.5構(gòu)造方法第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:ApplicationDemo2.java構(gòu)造方法(Constructor)又稱為構(gòu)造器,熟悉C++語言的人習(xí)慣上稱之為構(gòu)造函數(shù)。構(gòu)造方法是類用來創(chuàng)建對象、初始化類的屬性的一種特殊方法,構(gòu)造方法每次只會(huì)在類創(chuàng)建對象的時(shí)候被自動(dòng)調(diào)用,且只會(huì)被調(diào)用一次。Java中所有的類至少都要有一個(gè)構(gòu)造方法,即使用戶不明確地定義,系統(tǒng)也會(huì)為該類生成一個(gè)默認(rèn)構(gòu)造方法或缺省構(gòu)造方法,這種缺省構(gòu)造方法沒有任何參數(shù),且方法體為空。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)構(gòu)造方法沒有返回類型,也不允許返回void類型。構(gòu)造方法的方法名與類名完全相同(包括字母大小寫)一個(gè)類可以包含多個(gè)重載的構(gòu)造方法,使用這些重載的構(gòu)造方法創(chuàng)建不同對象時(shí),通過參數(shù)的不同來決定調(diào)用哪個(gè)構(gòu)造方法。構(gòu)造方法不允許用戶直接調(diào)用,只能通過new關(guān)鍵字在創(chuàng)建對象時(shí)由系統(tǒng)調(diào)用。33343132構(gòu)造方法的特征:第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)8:類的繼承【任務(wù)內(nèi)容】設(shè)計(jì)一個(gè)Person類,并派生出Employee【能力目標(biāo)】了解類繼承的概念掌握類繼承的語法學(xué)會(huì)用類繼承解決實(shí)際問題【任務(wù)分析】

本案例要求設(shè)計(jì)一個(gè)Person類,然后在Person類基礎(chǔ)之上擴(kuò)充新功能另外一個(gè)新類Employee。另外,Person類中定義的方法并不完全符合Employee的要求,因此,Employee必要的情況下可以重新定義Person類中已定義過的方法。3.6類的繼承第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)范例:ExtendExample.java繼承也稱為派生,其概念來源于這樣一種思想:同類事物具有共同性,在同類事物中,每個(gè)事物又具有其特殊性。運(yùn)用抽象的原則舍棄對象的特殊性,抽取其共性,便得到適應(yīng)于一組對象的類,這便是一般類或通用類,而把具有特殊性的類稱為特殊類或具體類。假定B類與C類具有A類的全部屬性和方法,同時(shí)又分別具有自己特有的某些屬性和方法,則把類A稱作一般類,把類B與類C稱作類A的特殊類。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承的意義繼承很好地解決了軟件復(fù)用。通過繼承,一個(gè)類可以擁有已有類的所有功能。因此,只需指明新類與現(xiàn)有類的不同,即增加自己的屬性和方法即可,從而有效地減少了代碼和數(shù)據(jù)的冗余度,增強(qiáng)了程序的可重用性。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承的特征33343132繼承關(guān)系是傳遞的繼承簡化了人們對事物的認(rèn)識(shí)和描述,能清晰體現(xiàn)相關(guān)類之間的層次結(jié)構(gòu)關(guān)系通過增強(qiáng)一致性來減少模塊的接口和界面,大大增加程序的易維護(hù)性Java不支持類的多重繼承,只支持類的單一繼承第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承的實(shí)現(xiàn)Java程序中,繼承通過extends關(guān)鍵字來實(shí)現(xiàn)。子類對父類的繼承是在類的聲明中通過關(guān)鍵字extends來指明。實(shí)現(xiàn)繼承的語法結(jié)構(gòu)為:[修飾符]class<子類類名>extends<父類類名>{……//類體定義}第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承的示例【例】實(shí)現(xiàn)兩個(gè)類的描述:基類人(Person)及子類學(xué)生(Pupil)。人具有姓名(name)、年齡(age)、性別(sex)及配偶姓名(spouseName)四類屬性,同時(shí)具有工作(work)、休息(rest)、娛樂(amusement)及處理家務(wù)(housework)四種行為方法。學(xué)生將從人這一父類中繼承除配偶姓名以外的三類屬性,并繼承及除工作和處理家務(wù)以外的兩類行為,同時(shí)要添加自身類特有的幾類屬性:所屬學(xué)校(school)、所學(xué)專業(yè)(specialty)及所在年級(jí)(degree),同時(shí)還要增加幾種學(xué)生的行為方法:學(xué)習(xí)(study)與考試(exam)。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)類的繼承關(guān)系第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)繼承機(jī)制下成員要素的行為繼承機(jī)制下,類的成員要素的行為方式將會(huì)發(fā)生很大的變化。子類可以定義與基類相同的成員變量和成員方法,這種情況下,Java系統(tǒng)將面臨如何解決成員要素定義的二義性沖突現(xiàn)象。對于屬性而言,子類在實(shí)現(xiàn)繼承父類屬性的同時(shí),可以定義與父類屬性相同名稱與類型的自身屬性,子類在執(zhí)行自身方法時(shí),默認(rèn)情況下使用的是自身定義的屬性,從而將父類的同名屬性暫時(shí)屏蔽掉。這種原則稱為屬性隱藏。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)同樣,對于成員方法而言,子類在繼承父類方法的同時(shí),可以定義與父類原型相同而方法的具體實(shí)現(xiàn)不同的自身的成員方法,子類在自身方法中調(diào)用與父類同名的方法時(shí),默認(rèn)情況下調(diào)用的是自身定義的方法,從而相當(dāng)于重新實(shí)現(xiàn)了父類的方法功能。這一原則稱為方法覆蓋(override)。例:InheritDemo.java第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)this和super(1)super用來實(shí)現(xiàn)對直接基類成員要素的訪問,它代表當(dāng)前類對象的直接父類,用于以下場合:調(diào)用直接父類的構(gòu)造方法。訪問直接父類中被隱藏的成員變量。調(diào)用直接父類中被隱藏的成員方法。(2)this代表當(dāng)前類對象本身,用于以下場合:構(gòu)造方法重載時(shí)調(diào)用本類的其它構(gòu)造方法。訪問本類對象的成員變量。調(diào)用本類對象的成員方法。第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)9:認(rèn)識(shí)面向?qū)ο蟮亩鄳B(tài)

【任務(wù)內(nèi)容】設(shè)計(jì)一個(gè)媒體播放器,該媒體播放器可以向后兼容任何格式的音頻媒體?!灸芰δ繕?biāo)】了解什么是面向?qū)ο蟮亩鄳B(tài)掌握如何運(yùn)用面向?qū)ο蟮亩鄳B(tài)特性學(xué)會(huì)用多態(tài)解決實(shí)際問題【任務(wù)分析】

該案例要求設(shè)計(jì)一個(gè)功能強(qiáng)大的媒體播放器,能夠支持各種音頻格式的播放。我們知道不同音頻格式的文件數(shù)據(jù)編碼格式都不相同。要讓媒體播放器識(shí)別各種編碼格式的音頻文件是個(gè)比較棘手的任務(wù)。3.7多態(tài)第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)實(shí)例:ApplicationDemo3.java在上例中涉及到了對象類型的轉(zhuǎn)型問題,我們知道,基本數(shù)據(jù)類型可以進(jìn)行類型轉(zhuǎn)換,Java支持隱式(自動(dòng))及顯式(強(qiáng)制)兩種類型轉(zhuǎn)換方式類的對象也能夠進(jìn)行類型轉(zhuǎn)換。類型轉(zhuǎn)換(TypeCasting),也稱為塑型

第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)對象類型轉(zhuǎn)換遵循的原則333132對象類型轉(zhuǎn)換必須在繼承的層次內(nèi)進(jìn)行,否則程序?qū)⒊霈F(xiàn)異常向上轉(zhuǎn)型是安全的CastingDemo.java向下轉(zhuǎn)型是危險(xiǎn)的

第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)對象類型轉(zhuǎn)換遵循的原則(續(xù))353634對象能夠轉(zhuǎn)換為對象類型實(shí)現(xiàn)的一個(gè)接口

對象多態(tài)------父類引用指向子類對象,此刻為了使用子類特有的方法,必須在方法體內(nèi)將對象進(jìn)行向下轉(zhuǎn)型(強(qiáng)制轉(zhuǎn)型),之前要用instanceof測試在類的繼承結(jié)構(gòu)中,處于相同層次的類對象之間不能進(jìn)行轉(zhuǎn)換第3章面向?qū)ο蟪绦蛟O(shè)計(jì)(上)ppt課件(全)任務(wù)10:初始化塊【任務(wù)內(nèi)容】將某個(gè)類中部分成員初始化為默認(rèn)值,其它成員通

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論