第四章_面向對象[上]_第1頁
第四章_面向對象[上]_第2頁
第四章_面向對象[上]_第3頁
第四章_面向對象[上]_第4頁
第四章_面向對象[上]_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第四章第四章面向對象面向對象本章內容l面向對象思想l類與對象及其使用l對象的內存圖l成員變量和局部變量的區(qū)別l匿名對象l封裝(private)lthis關鍵字l構造方法lstatic關鍵字面向對象思想引入l前面我們講過數組,當有多個數組都需要遍歷時,我們可以將遍歷的代碼封裝到方法中,需要遍歷時,就調用相應的方法即可,提高代碼的復用性。在對數組遍歷的基礎上繼續(xù)增加需求,比如獲取最值,數值逆序等,同樣需要將這些功能封裝到相應的方法中。這樣繼續(xù)封裝會發(fā)現方法越來越多,于是就想能不能將這些方法繼續(xù)進行封裝呢?通過前面的講解我們知道類是可以存放方法的,所以,我們就考慮使用類封裝來這多個方法,將來再做數組

2、的操作時,不用去找具體的方法,先找到這個類,然后使用這個類中的方法。這就是面向對象思想的編程方式。面向過程思想概述l我們來回想一下,這幾天我們完成一個需求的步驟:首先是搞清楚我們要做什么,然后在分析怎么做,最后我們再代碼體現。一步一步去實現,而具體的每一步都需要我們去實現和操作。這些步驟相互調用和協(xié)作,完成我們的需求。l在上面的每一個具體步驟中我們都是參與者,并且需要面對具體的每一個步驟和過程,這就是面向過程最直接的體現。l那么什么是面向過程開發(fā)呢? 面向過程開發(fā),其實就是面向著具體的每一個步驟和過程,把每一個步驟和過程完成,然后由這些功能方法相互調用,完成需求。l面向過程的代表語言:C語言面

3、向對象思想概述l當需求單一,或者簡單時,我們一步一步去操作沒問題,并且效率也挺高??呻S著需求的更改,功能的增多,發(fā)現需要面對每一個步驟很麻煩了,這時就開始思索,能不能把這些步驟和功能在進行封裝,封裝時根據不同的功能,進行不同的封裝,功能類似的封裝在一起。這樣結構就清晰了很多。用的時候,找到對應的類就可以了。這就是面向對象的思想。接下來我們看看面向對象到底是什么?面向對象思想概述l面向對象思想概述面向對象是基于面向過程的編程思想l面向對象思想特點是一種更符合我們思想習慣的思想可以將復雜的事情簡單化將我們從執(zhí)行者變成了指揮者角色發(fā)生了轉換面向對象思想舉例l面向對象思想舉例買電腦吃飯洗衣服萬事萬物皆

4、對象l面向過程思想和面向對象思想的代碼舉例把大象裝進冰箱面向對象開發(fā),設計,特征l面向對象開發(fā)就是不斷的創(chuàng)建對象,使用對象,指揮對象做事情。l面向對象設計其實就是在管理和維護對象之間的關系。l面向對象特征封裝(encapsulation)繼承(inheritance)多態(tài)(polymorphism)類與對象關系l我們學習編程語言,就是為了模擬現實世界的事物,實現信息化。比如:去超市買東西的計費系統(tǒng),去銀行辦業(yè)務的系統(tǒng)。l我們如何表示一個現實世界事物呢:屬性就是該事物的描述信息行為就是該事物能夠做什么舉例:學生事物l我們學習的Java語言最基本單位是類,所以,我們就應該把事物用一個類來體現。類與

5、對象關系l類:是一組相關的屬性和行為的集合l對象:是該類事物的具體體現l舉例:類學生對象班長就是一個對象類與對象(圖例)l類與對象的關系如圖圖紙汽車汽車汽車類的定義l現實世界的事物屬性人的身高,體重等行為人可以學習,吃飯等lJava中用class描述事物也是如此成員變量就是事物的屬性成員方法就是事物的行為l定義類其實就是定義類的成員(成員變量和成員方法)類與對象案例l學生類(講解)如何定義按照事物到類的過程一步步分析如何使用創(chuàng)建對象:類名 對象名 = new 類名();對象名.成員變量對象名.成員方法l手機類(學生練習)對象內存圖l1個對象的內存圖一個對象的基本初始化過程l2個對象的內存圖方法

6、的共用l3個對象的內存圖其中有兩個引用指向同一個對象成員變量和局部變量的區(qū)別l在類中的位置不同成員變量 類中方法外局部變量 方法內或者方法聲明上l在內存中的位置不同成員變量 堆內存局部變量 棧內存l生命周期不同成員變量 隨著對象的存在而存在,隨著對象的消失而消失局部變量 隨著方法的調用而存在,隨著方法的調用完畢而消失l初始化值不同成員變量 有默認的初始化值局部變量 沒有默認的初始化值,必須先定義,賦值,才能使用。形式參數問題l基本類型作為形式參數l引用類型作為形式參數匿名對象l匿名對象:就是沒有名字的對象。是對象的一種簡化表示形式l匿名對象的兩種使用情況對象調用方法僅僅一次的時候作為實際參數傳

7、遞注意:調用多次時,不合適好處: 在棧內存中沒有引用指向這個地址,所以用完后就成了垃圾,可以被回收封裝概述l封裝概述(studentDemo)是指隱藏對象的屬性和實現細節(jié),僅對外提供公共訪問方式。l好處:隱藏實現細節(jié),提供公共的訪問方式提高了代碼的復用性提高安全性。l封裝原則:將不需要對外提供的內容都隱藏起來。把屬性隱藏,提供公共方法對其訪問。private關鍵字lprivate關鍵字:是一個權限修飾符。可以修飾成員(成員變量和成員方法)被private修飾的成員只在本類中才能訪問。lprivate最常見的應用:把成員變量用private修飾提供對應的getXxx()/setXxx()方法一個

8、標準的案例的使用this關鍵字lthis:代表所在類的對象引用l記?。悍椒ū荒膫€對象調用,this就代表那個對象l什么時候使用this呢?局部變量隱藏成員變量其他用法后面和super一起講解構造方法l構造方法作用概述給對象的數據進行初始化l構造方法格式方法名與類名相同沒有返回值類型,連void都沒有沒有具體的返回值l構造方法注意事項如果你不提供構造方法,系統(tǒng)會給出默認構造方法如果你提供了構造方法,系統(tǒng)將不再提供構造方法也是可以重載的構造方法、構造函數、構造器 是一個意思,指構造方法類的成員方法l成員方法其實就是我們前面講過的方法l方法具體劃分:根據返回值有明確返回值方法返回void類型的方法根

9、據形式參數無參方法帶參方法一個基本類的標準代碼寫法l類成員變量構造方法無參構造方法帶參構造方法成員方法getXxx()setXxx()l給成員變量賦值的方式l無參構造方法+setXxx()l帶參構造方法一個基本類的標準代碼案例l標準的學生類(講解)感覺調用getXxx()輸出學生信息比較麻煩,加入一個方法show(),輸出學生對象的成員變量信息。l標準的手機類(練習)l注意目前的代碼是為了練習的一種標準格式給成員變量賦值有兩種方式,可以只寫一種類的初始化過程lStudent s = new Student();在內存中做了哪些事情?加載Student.class文件進內存在棧內存為s開辟空間在

10、堆內存為學生對象開辟空間對學生對象的成員變量進行默認初始化對學生對象的成員變量進行顯示初始化通過構造方法對學生對象的成員變量賦值學生對象初始化完畢,把對象地址賦值給s變量面向對象練習l定義一個類Demo,其中定義一個求兩個數據和的方法,定義一個測試了Test,進行測試。l定義一個長方形類,定義 求周長和面積的方法,然后定義一個測試了Test2,進行測試。l定義一個員工類,自己分析出幾個成員,然后給出成員變量,構造方法,getXxx()/setXxx()方法,以及一個顯示所有成員信息的方法。并測試。l定義一個類MyMath,提供基本的加減乘除功能,然后進行測試。static關鍵字l可以修飾成員變

11、量和成員方法(Person)lstatic關鍵字特點(Student)隨著類的加載而加載優(yōu)先于對象存在被類的所有對象共享這也是我們判斷是否使用靜態(tài)關鍵字的條件可以通過類名調用lstatic關鍵字注意事項在靜態(tài)方法中是沒有this關鍵字的靜態(tài)方法只能訪問靜態(tài)的成員變量和靜態(tài)的成員方法靜態(tài)的內存圖l靜態(tài)的內容存在于方法區(qū)的靜態(tài)區(qū)靜態(tài)變量和成員變量的區(qū)別(teacher)l所屬不同靜態(tài)變量屬于類,所以也稱為為類變量成員變量屬于對象,所以也稱為實例變量(對象變量)l內存中位置不同靜態(tài)變量存儲于方法區(qū)的靜態(tài)區(qū)成員變量存儲于堆內存l內存出現時間不同靜態(tài)變量隨著類的加載而加載,隨著類的消失而消失成員變量隨著

12、對象的創(chuàng)建而存在,隨著對象的消失而消失l調用不同靜態(tài)變量可以通過類名調用,也可以通過對象調用成員變量只能通過對象名調用main方法是靜態(tài)的lpublic static void main(String args) public 被jvm調用,訪問權限足夠大。static 被jvm調用,不用創(chuàng)建對象,直接類名訪問void被jvm調用,不需要給jvm返回值main 一個通用的名稱,雖然不是關鍵字,但是被jvm識別String args 以前用于接收鍵盤錄入的演示案例制作幫助文檔l制作工具類ArrayToolsl制作幫助文檔(API)javadoc -d 目錄 -author -version ArrayTools.java如何使用幫助文檔l找到文檔,打開文檔l點擊顯示,找到索引,出現輸入框l你應該知道你找誰?舉例:Scannerl看這個類的結構(需不需要導包)成員變量字段構造方法構造方法成員方法方法l看這個類的說l看構造方法l看成員方法l然后使用通過API學習Math類lMath類概述Math包含用于執(zhí)行基本數學運算的方法lMath類特點沒有構造方法,因為成員都是靜態(tài)的lMath類講解一個方法獲取隨機數獲取1-100之間的隨機數l案例:猜數字小游戲代碼塊l代碼塊在Java中,使用括起來的代碼被稱為代碼塊,根據其位置

溫馨提示

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

評論

0/150

提交評論