Java語言程序設(shè)計(jì)(第2版)教學(xué)設(shè)計(jì)第04章 教學(xué)設(shè)計(jì)_第1頁
Java語言程序設(shè)計(jì)(第2版)教學(xué)設(shè)計(jì)第04章 教學(xué)設(shè)計(jì)_第2頁
Java語言程序設(shè)計(jì)(第2版)教學(xué)設(shè)計(jì)第04章 教學(xué)設(shè)計(jì)_第3頁
Java語言程序設(shè)計(jì)(第2版)教學(xué)設(shè)計(jì)第04章 教學(xué)設(shè)計(jì)_第4頁
Java語言程序設(shè)計(jì)(第2版)教學(xué)設(shè)計(jì)第04章 教學(xué)設(shè)計(jì)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

學(xué)IT有疑問,就找千問千知千里尋他眾百度,鋒自苦寒磨礪出千鋒教育Java語言程序設(shè)計(jì)(第2版)教學(xué)設(shè)計(jì)課程名稱:Java語言程序設(shè)計(jì)(第2版)_______授課年級:___________________________授課學(xué)期:___________________________教師姓名:___________________________2020年03月01日課程名稱第4章面向?qū)ο螅ㄉ希┯?jì)劃學(xué)時(shí)4學(xué)時(shí)內(nèi)容分析本章主要介紹面向?qū)ο蟮母拍?、類與對象、構(gòu)造方法、this關(guān)鍵字、垃圾回收、static關(guān)鍵字、內(nèi)部類教學(xué)目標(biāo)與教學(xué)要求要求學(xué)生理解面向?qū)ο蟮母拍?、掌握類的封裝與使用、掌握構(gòu)造方法的使用方法、掌握this和static關(guān)鍵字的使用、了解垃圾回收機(jī)制、了解內(nèi)部類教學(xué)重點(diǎn)類與對象、構(gòu)造方法、this關(guān)鍵字、垃圾回收、static關(guān)鍵字、內(nèi)部類教學(xué)難點(diǎn)類與對象、構(gòu)造方法、this關(guān)鍵字、垃圾回收、static關(guān)鍵字、內(nèi)部類教學(xué)方式課堂講解及ppt演示教學(xué)過程第一課時(shí)(面向?qū)ο蟮母拍?、類與對象、構(gòu)造方法、this關(guān)鍵字)內(nèi)容回顧回顧上節(jié)內(nèi)容,引出本課時(shí)主題。上節(jié)已經(jīng)介紹了數(shù)組與方法,在程序開發(fā)初期人們使用結(jié)構(gòu)化開發(fā)語言,但隨著軟件的規(guī)模越來越大,結(jié)構(gòu)化語言的弊端也逐漸暴露出來,開發(fā)周期被延長,產(chǎn)品的質(zhì)量也不盡人意,結(jié)構(gòu)化語言已經(jīng)不再適合當(dāng)前的軟件開發(fā)。這時(shí)人們開始將另一種開發(fā)思想引入程序中,即面向?qū)ο蟮拈_發(fā)思想。面向?qū)ο笏枷胧侨祟愖钭匀坏囊环N思考方式,它將所有預(yù)處理的問題抽象為對象,同時(shí)了解這些對象具有哪些相應(yīng)的屬性以及展示這些對象的行為,以解決這些對象面臨的一些實(shí)際問題,這樣就在程序開發(fā)中引入了面向?qū)ο笤O(shè)計(jì)的概念,面向?qū)ο笤O(shè)計(jì)實(shí)際上就是對現(xiàn)實(shí)世界的對象進(jìn)行建模操作。面向?qū)ο蟮奶攸c(diǎn)主要可以概括為封裝性、繼承性和多態(tài)性,接下來針對這三種特性進(jìn)行簡單介紹。明確學(xué)習(xí)目標(biāo)能夠掌握面向?qū)ο蟮母拍钅軌蛘莆疹惖亩x能夠掌握對象的創(chuàng)建于使用能夠掌握類的封裝能夠掌握訪問修飾符能夠掌握構(gòu)造方法的定義能夠掌握構(gòu)造方法的重載能夠掌握this關(guān)鍵字知識講解面向?qū)ο蟮母拍?.封裝性封裝是面向?qū)ο缶幊痰暮诵乃枷搿ο蟮膶傩院托袨榉庋b起來,其載體就是類,類通常對客戶隱藏其實(shí)現(xiàn)細(xì)節(jié),這就是封裝的思想。例如,用戶使用計(jì)算機(jī)時(shí),只需要使用手指敲擊鍵盤就可以實(shí)現(xiàn)一些功能,無須知道計(jì)算機(jī)內(nèi)部是如何工作的,即使知道計(jì)算機(jī)的工作原理,但在使用計(jì)算機(jī)時(shí)也并不完全依賴于計(jì)算機(jī)工作原理這些細(xì)節(jié)。2.繼承性類與類之間同樣具有關(guān)系,如一個百貨公司類與銷售員類相聯(lián)系,類之間的這種關(guān)系被稱為關(guān)聯(lián)。關(guān)聯(lián)主要描述兩個類之間的一般二元關(guān)系,例如,一個百貨公司類與銷售員類就是一個關(guān)聯(lián),學(xué)生類與教師類也是一個關(guān)聯(lián)。兩個類之間的關(guān)系有很多種,繼承是其中的一種。3.多態(tài)性多態(tài)性允許以統(tǒng)一的風(fēng)格編寫程序,以處理種類繁多的已存在的類及相關(guān)類。該統(tǒng)一風(fēng)格可以由父類來實(shí)現(xiàn),根據(jù)父類統(tǒng)一風(fēng)格的處理,可以實(shí)例化子類的對象。由于整個事件的處理都只依賴于父類的方法,所以日后只要維護(hù)和調(diào)整父類的方法即可。這樣就降低了維護(hù)的難度,節(jié)省了時(shí)間。類的定義在類中,屬性是通過成員變量體現(xiàn)的,而行為是成員函數(shù)(又稱為方法)實(shí)現(xiàn)的,下面為大家演示Java中定義類的通用格式,其語法格式如下:對象的創(chuàng)建與使用類是對象的抽象,為對象定義了屬性和行為,但類本身既不帶任何數(shù)據(jù),也不存在于內(nèi)存空間中。而對象是類的一個具體存在,既擁有獨(dú)立的內(nèi)存空間,也存在獨(dú)特的屬性和行為,屬性還可以隨著自身的行為而發(fā)生改變。接下來演示如何用類創(chuàng)建對象,創(chuàng)建對象之前,必須先聲明對象,其語法格式如下:類是自定義類型,也是一種引用類型,因此該對象名是一個引用變量,默認(rèn)值為null,表示不指向任何堆內(nèi)存空間。接下來需要對該變量進(jìn)行初始化,Java使用new關(guān)鍵字來創(chuàng)建對象,也稱實(shí)例化對象,其語法格式如下:聲明和實(shí)例化對象的過程可以簡化,其語法格式如下:類的封裝封裝是面向?qū)ο蟮娜筇卣髦?,類的設(shè)計(jì)者將類設(shè)計(jì)成一個黑匣子,使用者只能通過類所提供的公共方法來實(shí)現(xiàn)對內(nèi)部成員的操作和訪問,而不能看見方法的實(shí)現(xiàn)細(xì)節(jié),也不能直接訪問對象內(nèi)部成員。類的封裝可以隱藏類的實(shí)現(xiàn)細(xì)節(jié),迫使用戶只能通過方法去訪問數(shù)據(jù),這樣就可以增強(qiáng)程序的安全性。示例參考教材4.2.3節(jié)。訪問修飾符Java中訪問修飾符也叫訪問控制符,是指能夠控制類、成員變量、方法的使用權(quán)限的關(guān)鍵字。通常放在語句的最前端。在面向?qū)ο缶幊讨?,訪問控制符是一個很重要的概念,可以使用它來保護(hù)對類、變量、方法和構(gòu)造方法的訪問。類的訪問修飾符只有一個public,屬性和方法能夠被四個修飾符修飾,分別是:public、private、protected還有一種默認(rèn)的缺省權(quán)限(default),接下來分別對這幾種訪問修飾符進(jìn)行詳細(xì)地講解。1.公有訪問控制符(public)共有的,即對所有類可見。被聲明為public的類、方法和接口允許被程序中的任何類訪問。Java的類是通過包的概念來組織的,包是類的一個松散的集合,處于同一個包中的類可以不需要任何說明方便地相互訪問和引用,而對于不同包中的類,則需要導(dǎo)入相應(yīng)public類所在的包。由于類的繼承性,類中所有的公有方法和變量都能被其子類繼承。每個Java程序的主類必須是public修飾的類,否則Java解釋器將不能運(yùn)行該類。2.私有訪問控制符(private)私有的,即在同一類內(nèi)可見。被private修飾的屬性或方法被提供了最高的保護(hù)級別,只能由該類自身訪問或修改,而且不能被任何其他類(包括該類的子類)來獲取和引用。3.保護(hù)訪問控制符(protected)受保護(hù)的,即對同一包內(nèi)的類和所有子類可見??梢杂脕硇揎棇傩?、方法,不能修飾類。protected修飾的成員變量可以被3種類所引用:該類自身、與它在同一個包中的其他類、在其他包中該類的子類。使用protected修飾符的主要作用是允許其他包中該類的子類來訪問父類的特定屬性。4.默認(rèn)訪問控制符默認(rèn)訪問控制權(quán)規(guī)定,該類只能被同一個包中的類訪問和引用,而不可以被其他包中的類使用,這種訪問特性又稱為包訪問性。同樣道理,類內(nèi)的變量或方法如果沒有訪問控制符來規(guī)定,也就是具有包訪問性。簡單地說,定義在同一個程序中的所有類屬于一個包。5.驗(yàn)證以下將使用代碼案例分別對以上四種修飾符進(jìn)行驗(yàn)證,首先創(chuàng)建兩個包qianfeng和test1,在包qianfeng下創(chuàng)建User類,示例代碼參考教材4.2.4節(jié)。6.總結(jié)簡單總結(jié)一下,按它們訪問范圍由大到小排列如下:public>protected>默認(rèn)>private;構(gòu)造方法的定義構(gòu)造方法是在創(chuàng)建一個對象使用new關(guān)鍵字時(shí)被調(diào)用的。構(gòu)造方法有三個特征:構(gòu)造方法名與類名相同。構(gòu)造方法沒有返回值類型。構(gòu)造方法中不能使用return返回一個值。構(gòu)造方法的重載由于系統(tǒng)提供的默認(rèn)構(gòu)造方法通常不能滿足需求,例如,造車廠生產(chǎn)卡車與小轎車時(shí),出廠的配置是不一樣的,這時(shí)就需要多個構(gòu)造方法,與普通方法一樣,只要每個構(gòu)造方法的參數(shù)列表不同,即可實(shí)現(xiàn)重載。這樣在創(chuàng)建對象時(shí),就可以通過調(diào)用不同的構(gòu)造方法為不同的屬性賦值,示例代碼參考教材4.3.2節(jié)。this關(guān)鍵字如前所述,類在定義成員方法時(shí),局部變量和成員變量可以重名,但此時(shí)不能訪問成員變量。為避免這種情形,Java提供了this關(guān)鍵字,表示當(dāng)前對象,指向調(diào)用的對象本身。接下來演示this的本質(zhì),示例代碼參考教材4.4節(jié)。1.使用this調(diào)用類中的屬性this關(guān)鍵字可以明確調(diào)用類的成員變量,不會與局部變量名發(fā)生沖突。接下來演示this調(diào)用屬性,示例代碼參考教材4.4節(jié)。2.使用this調(diào)用成員方法this既然可以訪問成員變量,那么也可以訪問成員方法,示例代碼參考教材4.4節(jié)。3.使用this調(diào)用構(gòu)造方法構(gòu)造方法是在實(shí)例化時(shí)被自動調(diào)用的,因此不能直接像調(diào)用成員方法一樣去調(diào)用構(gòu)造方法,但可以使用this([實(shí)參列表])的方式調(diào)用其他的構(gòu)造方法,示例代碼參考教材4.4節(jié)。第二課時(shí)(垃圾回收、static關(guān)鍵字、內(nèi)部類)內(nèi)容回顧回顧上節(jié)內(nèi)容,引出本課時(shí)主題。上節(jié)已經(jīng)介紹了面向?qū)ο蟮母拍?、類的定義、對象的創(chuàng)建與使用、類的封裝、訪問修飾符、構(gòu)造方法的定義、構(gòu)造方法的重載,this關(guān)鍵字,下面將介紹垃圾回收、靜態(tài)變量、靜態(tài)方法、代碼塊、單例模式、成員內(nèi)部類、靜態(tài)內(nèi)部類、方法內(nèi)部類和匿名內(nèi)部類。明確學(xué)習(xí)目標(biāo)能夠掌握垃圾回收能夠掌握靜態(tài)變量能夠掌握靜態(tài)方法能夠掌握代碼塊能夠掌握單例模式能夠掌握成員內(nèi)部類能夠掌握靜態(tài)內(nèi)部類能夠掌握方法內(nèi)部類能夠掌握匿名內(nèi)部類知識講解垃圾回收在Java中,用new關(guān)鍵字創(chuàng)建對象或數(shù)組等引用類型時(shí),都會在堆內(nèi)存中為之分配一塊內(nèi)存,用于保存對象,當(dāng)此塊內(nèi)存不再被任何引用變量引用時(shí),這塊內(nèi)存就變成垃圾。Java引入了垃圾回收機(jī)制(GarbageCollection,GC)來處理垃圾,它是一種動態(tài)存儲管理技術(shù),由Java虛擬機(jī)自動回收垃圾對象所占的內(nèi)存空間,不需要程序代碼來顯式釋放。在了解垃圾回收之前,首先了解下JVM的內(nèi)存結(jié)構(gòu),在JVM的內(nèi)存結(jié)構(gòu)中主要包含五個區(qū)域,分別是:程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法棧、堆、方法區(qū)。其中程序計(jì)數(shù)器占用的內(nèi)存空間較小,可以看做當(dāng)前線程的行號指示器;虛擬機(jī)棧在每個方法的執(zhí)行時(shí)會創(chuàng)建一個棧楨,用來存儲局部變量表、操作數(shù)棧、動態(tài)連接、方法返回地址等信息,每個方法從調(diào)用到執(zhí)行完成的過程,就對應(yīng)著一個棧幀在虛擬機(jī)棧中的入棧到出棧的過程;本地方法棧與虛擬機(jī)棧的作用相似,虛擬機(jī)棧是為了虛擬機(jī)能夠執(zhí)行Java方法服務(wù)的,而本地方法棧則為虛擬機(jī)能夠使用到的本地方法服務(wù)的;堆是JVM中最大的一塊內(nèi)存區(qū)域,存放了所有類的實(shí)例以及為數(shù)組對象分配的內(nèi)存區(qū)域,它是線程共享的;方法區(qū)同堆一樣,也是一塊供所有線程共享的內(nèi)存區(qū)域,用來存儲已經(jīng)被虛擬機(jī)加載的類信息、常量、靜態(tài)變量。程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法棧這三個區(qū)域是線程私有的。不需要回收。而堆區(qū)和方法區(qū)內(nèi)存的分配和回收是垃圾收集器關(guān)注的部分,垃圾回收也是回收這些區(qū)域的垃圾。JVM內(nèi)存模型如下圖所示。垃圾收集器在對堆區(qū)和方法區(qū)進(jìn)行回收前,需要確定這些區(qū)域中的對象有哪些是可以被回收的,哪些是不用回收的,常用來判斷對象是否需要回收的算法有兩種:引用計(jì)數(shù)器算法引用計(jì)數(shù)器算法是給對象添加一個引用計(jì)數(shù)器,每當(dāng)創(chuàng)建一個對象時(shí),就會為該對象分配一個變量,把變量計(jì)數(shù)器的值設(shè)置為1。當(dāng)其它變量被賦值為這個對象的引用時(shí),計(jì)數(shù)的值加1,如果一個對象實(shí)例的某個引用超過了生命周期、被設(shè)置為一個新值或失去引用時(shí),對象實(shí)例的引用計(jì)數(shù)器的值就會減1,任何引用計(jì)數(shù)器為0的對象實(shí)例就可以被當(dāng)作垃圾收集,通過代碼演示如下:Studentstu1=newStudent(“張三”);Studentstu2=stu1;可達(dá)性分析算法可達(dá)性分析算法是程序中所有的引用關(guān)系看成一張圖,從一個對象節(jié)點(diǎn)GCROOT開始,向下尋找對應(yīng)的引用節(jié)點(diǎn)。找到一個節(jié)點(diǎn)以后,繼續(xù)尋找該節(jié)點(diǎn)的引用節(jié)點(diǎn),所找尋的路徑被稱為引用鏈。所有的引用節(jié)點(diǎn)尋找完畢之后,當(dāng)一個對象到GCROOT沒有任何引用鏈相連時(shí),即為無用的節(jié)點(diǎn),無用的節(jié)點(diǎn)將會被判定為是可回收的對象,如下圖所示。靜態(tài)變量使用static修飾的成員變量,稱為靜態(tài)變量或類變量,它被類的所有對象共享,屬于整個類所有,因此可以通過類名直接來訪問。而未使用static修飾的成員變量稱為實(shí)例變量,它屬于具體對象獨(dú)有,只能通過引用變量訪問。示例代碼參考教材4.6.1節(jié)。靜態(tài)方法使用static修飾的成員方法,稱為靜態(tài)方法,無須創(chuàng)建類的實(shí)例就可以調(diào)用靜態(tài)方法,靜態(tài)方法可以通過類名調(diào)用。示例代碼參考教材4.6.2節(jié)。代碼塊代碼塊是指用大括號“{}”括起來的一段代碼,根據(jù)位置及聲明關(guān)鍵字的不同,代碼塊可分為普通代碼塊、構(gòu)造代碼塊、靜態(tài)代碼塊和同步代碼塊,其中同步代碼塊在多線程部分進(jìn)行講解。1.普通代碼塊普通代碼塊就是在方法名后或方法體內(nèi)用大括號“{}”括起來的一段代碼,示例代碼參考教材4.6.3節(jié)。2.構(gòu)造代碼塊構(gòu)造代碼塊就是直接定義在類中的代碼塊,它沒有任何前綴、后綴及關(guān)鍵字修飾。上節(jié)中提到,每個類中至少有一個構(gòu)造方法,創(chuàng)建對象時(shí),構(gòu)造方法被自動調(diào)用,構(gòu)造代碼塊也是在創(chuàng)建對象時(shí)被調(diào)用,但它在構(gòu)造方法之前被調(diào)用,因此,構(gòu)造代碼塊也可用來初始化成員變量,示例代碼參考教材4.6.3節(jié)。3.靜態(tài)代碼塊靜態(tài)代碼塊就是使用static關(guān)鍵字修飾的代碼塊,它是最早執(zhí)行的代碼塊,示例代碼參考教材4.6.3節(jié)。單例模式設(shè)計(jì)模式描述了軟件設(shè)計(jì)過程中經(jīng)常碰到的問題及解決方案,它是面向?qū)ο笤O(shè)計(jì)經(jīng)驗(yàn)的總結(jié)和理論化抽象。通過設(shè)計(jì)模式,開發(fā)者就可以無數(shù)次地重用已有的解決方案,無需再重復(fù)相同的工作。單例模式是設(shè)計(jì)模式中的一種,是指一個類在程序運(yùn)行期間有且僅有一個實(shí)例,并且自行實(shí)例化向整個系統(tǒng)提供這個實(shí)例。例如Windows操作系統(tǒng)只提供一個任務(wù)管理器。單例類的一個重要特征是類的構(gòu)造方法是私有的,從而避免了外部利用構(gòu)造方法直接創(chuàng)建多個實(shí)例。接下來演示單例類的實(shí)現(xiàn),示例代碼參考教材4.6.4節(jié)。成員內(nèi)部類成員內(nèi)部類是指類作為外部類的一個成員,能直接訪問外部類的所有成員,但在外部類中訪問內(nèi)部類,則需要在外部類中創(chuàng)建內(nèi)部類的對象,使用內(nèi)部類的對象來訪問內(nèi)部類中的成員。同時(shí),若要在外部類外要訪問內(nèi)部類,則需要通過外部類對象去創(chuàng)建內(nèi)部類對象,在外部類外創(chuàng)建一個內(nèi)部類對象的語法格式如下:外部類名.內(nèi)部類名引用變量名=new外部類名().new內(nèi)部類名()靜態(tài)內(nèi)部

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論