面向?qū)ο笤O(shè)計(jì)(類對(duì)象構(gòu)造方法重栽)_第1頁
面向?qū)ο笤O(shè)計(jì)(類對(duì)象構(gòu)造方法重栽)_第2頁
面向?qū)ο笤O(shè)計(jì)(類對(duì)象構(gòu)造方法重栽)_第3頁
面向?qū)ο笤O(shè)計(jì)(類對(duì)象構(gòu)造方法重栽)_第4頁
面向?qū)ο笤O(shè)計(jì)(類對(duì)象構(gòu)造方法重栽)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、上節(jié)課內(nèi)容提問,內(nèi)容提問,Java面向?qū)ο笤O(shè)計(jì)1,本課內(nèi)容,面向?qū)ο蟮乃枷?類、屬性和方法 對(duì)象的創(chuàng)建和使用 構(gòu)造方法 重載,1. 面向?qū)ο蟮幕靖拍?OOP: Object Oriented Programming,是目前主流的程序設(shè)計(jì)語言,傳統(tǒng)的編程技術(shù)是結(jié)構(gòu)化、面向過程的 OOP是對(duì)現(xiàn)實(shí)世界運(yùn)行方式的模擬,按人們思維習(xí)慣來描述問題、解決問題 對(duì)象(object)和類(class)是面向?qū)ο蠓椒ǖ暮诵母拍?類是對(duì)相同或相似事物的一種抽象,描述了一類事物的共同特征 對(duì)象是實(shí)際存在的某類事物的個(gè)體,也稱之為類的實(shí)例(instance),對(duì)象(Object),對(duì)象是對(duì)現(xiàn)實(shí)世界中事物的建模,擁有狀

2、態(tài)和行為(An object is a software bundle of related variables and methods) 狀態(tài)-成員變量,行為-成員方法,variables make up the center Methods surround and hide the objects nucleus from other objects provide modularity and information hiding benifits,類(Class),類是對(duì)相似行為的對(duì)象的一種抽象,描述了屬于該類型的所有對(duì)象的性質(zhì)-統(tǒng)一的屬性和操作方式(A class is a blu

3、eprint or prototype that defines the variables and the methods common to all objects of a certain kind) 類就是對(duì)象的數(shù)據(jù)類型,對(duì)象是類的實(shí)例 Fruit apple, grape; 從一個(gè)類可以創(chuàng)建多個(gè)對(duì)象,這些對(duì)象具有相同的行為,但各自擁有自身的狀態(tài),以對(duì)象思考問題,以面向?qū)ο蟮乃季S來思考一個(gè)問題的解答時(shí),會(huì)將與問題相關(guān)的種種元素視為一個(gè)個(gè)對(duì)象,簡單地說,面向?qū)ο蟮乃季S就是以對(duì)象為中心來思考問題,然而什么又叫做以以對(duì)象為中心來思考問題”呢?我不想用太多抽象的字眼來解釋這些詞語,這里提出一個(gè)

4、實(shí)際問題,并嘗試以面向?qū)ο蟮姆绞絹硭伎?有一個(gè)賬戶,賬戶中有存款余額,您可以對(duì)賬戶進(jìn)行存款與提款的動(dòng)作,并可以查詢以取得存款余額。 要以對(duì)象為中心來思考問題,首先要識(shí)別出問題中的對(duì)象,以及對(duì)象上的屬性與可操作的方法。,識(shí)別問題中的對(duì)象與屬性,賬戶是一個(gè)比較單純的問題,可以從問題中出現(xiàn)的名詞來識(shí)別出對(duì)象,描述中有賬戶與余額兩個(gè)名稱,基本上這兩個(gè)名稱都可以識(shí)別成對(duì)象,當(dāng)然在這個(gè)簡單的問題當(dāng)中,我們先識(shí)別賬戶這個(gè)對(duì)象。 識(shí)別出對(duì)象后,接下來我們看看對(duì)象上有什么屬性(Property),像對(duì)象上擁有什么特征或是可表示的狀態(tài).屬性是對(duì)象的靜態(tài)特征,屬性基本上也可以從名詞上識(shí)別,在這個(gè)例子中,您可以將余額

5、作為賬戶的屬性之一。,賬戶,賬戶余額,識(shí)別對(duì)象上的方法,接著要識(shí)別對(duì)象上的方法,也就是對(duì)象上的動(dòng)態(tài)特征,即對(duì)象可以“干什么”,用我們專業(yè)的話說就是對(duì)象本身可操作或供操作的接口。根據(jù)描述“存款”、“提款”、“余額查詢”可以識(shí)別為方法,賬戶,存款余額,存款 提款 查詢余額,練習(xí):Car.java UseCar.java 什么是類和對(duì)象、屬性和方法的定義、 類的實(shí)例化、類成員的訪問,類和對(duì)象之間的關(guān)系,類不是對(duì)象 (卻是用來創(chuàng)建它們的模型) 類是對(duì)象的藍(lán)圖,它告訴虛擬機(jī)如何創(chuàng)建某種類型的對(duì)象。,Java虛擬機(jī),類,如何獲得對(duì)象 ?,調(diào)用類的構(gòu)造函數(shù)創(chuàng)建對(duì)象,類的構(gòu)造函數(shù),創(chuàng)建一個(gè)個(gè)對(duì)象,虛擬機(jī),定義

6、構(gòu)造函數(shù),與類名稱同名的方法稱為構(gòu)造函數(shù),它沒有返回值。構(gòu)造函數(shù)的作用就是讓您在構(gòu)造對(duì)象實(shí)例的同時(shí)初始化一些必要信息,構(gòu)造函數(shù)在創(chuàng)建對(duì)象實(shí)例的時(shí)候被調(diào)用。構(gòu)造函數(shù)有無參和有參兩種形式 系統(tǒng)默認(rèn)提供一個(gè)無參的構(gòu)造函數(shù)。 一旦您定義一個(gè)有參的構(gòu)造函數(shù),系統(tǒng)不再提供默認(rèn)的構(gòu)造函數(shù),對(duì)象的產(chǎn)生和使用,創(chuàng)建對(duì)象實(shí)例的根本途徑是構(gòu)造器,通過new關(guān)鍵字來調(diào)用某個(gè)類的構(gòu)造器即可創(chuàng)建這個(gè)類的實(shí)例 / 定義一個(gè)Person類型的變量 Person p; / 通過new關(guān)鍵字調(diào)用Person類的構(gòu)造器,返回一個(gè)Person實(shí) 例,將該P(yáng)erson實(shí)例賦給p變量。 p = new Person();,對(duì)象、引用,有

7、這樣一行代碼p = new Person();這行代碼創(chuàng)建一個(gè)Person實(shí)例,這個(gè)實(shí)例在堆內(nèi)存里。在java中,通過new運(yùn)算符創(chuàng)建出的對(duì)象,都被放入到堆內(nèi)存里.,Person p;,p,棧內(nèi)存,p = new Person();,name,age,堆內(nèi)存,通過new關(guān)鍵字生成的對(duì)象存放在堆內(nèi)存里,對(duì)象 引用,java不允許直接操作內(nèi)存,所以我們無法直接操作堆內(nèi)存里的對(duì)象,如果想要操作對(duì)象,必須通過引用 Person p = new Person();,引用,可以通過引用p來操作 對(duì)象上的方法 p.setName(張三),對(duì)象,引用,對(duì)象、引用,當(dāng)一個(gè)對(duì)象被創(chuàng)建后,這個(gè)對(duì)象將保持在堆內(nèi)存,J

8、ava程序不允許直接訪問堆內(nèi)存的對(duì)象,只能通過引用訪問。 如果堆內(nèi)存里的對(duì)象沒有任何引用指向它,這個(gè)對(duì)象也就成了垃圾,Java的垃圾回收機(jī)制將回收該對(duì)象,釋放該對(duì)象所占的內(nèi)存. 因此,如果希望通知垃圾回收機(jī)制回收某個(gè)對(duì)象,只需要切斷該對(duì)象的所有引用變量和它之間的關(guān)聯(lián)即可,也就是把這些引用設(shè)為null,構(gòu)造方法,特征 1. 與類同名,用new 調(diào)用 2. 構(gòu)造器沒有任何返回類型,哪怕是void也不行。假如指定了返回值,那么Java會(huì)視為一個(gè)普通的方法。 3只要類中顯式地定義一個(gè)或多個(gè)構(gòu)造器,那么Java不會(huì)再為你定義一個(gè)默認(rèn)的構(gòu)造器,new 關(guān)鍵字,new 關(guān)鍵字的作用: (1)為該對(duì)象分配內(nèi)存

9、空間; (2)返回該內(nèi)存空間的引用,返回首地址;(引用是指指針的別名) (3)調(diào)用構(gòu)造函數(shù),構(gòu)造函數(shù)自動(dòng)將成員賦初值。,練習(xí),1、定義一個(gè)類Person此類有成員屬性:name,age,sex,有說話say() ,吃飯eat() 行為要求說話的內(nèi)容是:我叫 name 男 年齡:age 吃飯eat() 說:我愛吃水果“ 定義Test測(cè)試類,調(diào)用say,eat(), 提示: a.定義擁有參數(shù)的構(gòu)造方法初始化成員屬性, b.如果系統(tǒng)不允許提供有參構(gòu)造,程序如果實(shí)現(xiàn),操作符:= ,= ,equals使用,操作符= 基本數(shù)據(jù)類型是傳植 對(duì)象是改變其引用 Assignment.java,操作符=/equa

10、ls,操作符=/equals 1、= =比較的是地址(否是同一個(gè)對(duì)象),如果是具體的阿拉伯?dāng)?shù)字的比較(基本數(shù)據(jù)類型),值相等則為TRUE, 如:int a=10 與 long b=10L 與 double c=10.0都是相同的(為true),因?yàn)樗麄兌贾赶虻刂窞?0的堆棧; 2、String的equals()方法比較的是兩個(gè)String對(duì)象的內(nèi)容是否一樣 Equivalence.java,重載(Overload)方法,java允許一個(gè)類中有多個(gè)同名的方法,只要形參列表不同就行,為什么要這樣做,重載,重載 方法重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。Java的方法重載,就是在類中可以

11、創(chuàng)建多個(gè)方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。調(diào)用方法時(shí)通過傳遞給它們的不同個(gè)數(shù)和類型的參數(shù)來決定具體使用哪個(gè)方法, 這就是多態(tài)性。,方法重載,1.構(gòu)造器重載 2.方法重載,構(gòu)造器重載,是指同一個(gè)類中存在著若干個(gè)具有不同參數(shù)列表的構(gòu)造函數(shù)。 這樣,在創(chuàng)建該類的對(duì)象時(shí),就可以根據(jù)不同的情況選擇不同的構(gòu)造函數(shù),提高編程靈活性。,SimpleConstructor2 .java,重載特征,方法名相同 參數(shù)列表不同 在同一個(gè)類中 方法體不同,方法重載OverloadingOrder.java,重載練習(xí),1.定義一個(gè)類Book,當(dāng)我知道書的名字或書的價(jià)格的時(shí)候可以獲得這本書,或我知道書

12、的出版商和書名時(shí)也可以獲得一本書。請(qǐng)用OO設(shè)計(jì)這個(gè)類,并測(cè)試。 2.一個(gè)矩形可用兩個(gè)點(diǎn)表示,一個(gè)三角形可用三個(gè)點(diǎn)來表示,一個(gè)圓可用一個(gè)點(diǎn)和一個(gè)半徑來表示。 請(qǐng)實(shí)現(xiàn)三個(gè)同名方法(calArea),分別計(jì)算給出的矩形、三角形和圓形的面積。矩形為Rect,三角形為Triangle,圓形為Circle(請(qǐng)注意大小寫)。(每個(gè)點(diǎn)用x,y兩個(gè)坐標(biāo)表示,x坐標(biāo)在前,y坐標(biāo)在后).,This關(guān)鍵字,This 關(guān)鍵字的使用 1.在構(gòu)建器里調(diào)用構(gòu)建器 盡管可用this調(diào)用一個(gè)構(gòu)建器,但不可調(diào)用兩個(gè)。 構(gòu)建器調(diào)用必須是我們做的第一件事情 Flower.java 2. 解決局部變量和成員變量名稱相同的問題 DemoThis.java,類的初始化順序,順序: 類變量 構(gòu)造方法 普通方法 練習(xí):OrderOfInitialization.java,課后作業(yè),第1題:編譯、運(yùn)行本課例題; 第2題:編寫一個(gè)student類,有學(xué)號(hào)、姓名、年齡等屬性。要求提供一到多個(gè)構(gòu)造方法,成員變量的設(shè)置、訪問方法, 第3題:編寫一個(gè)test類,對(duì)student類進(jìn)

溫馨提示

  • 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. 人人文庫網(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)論