Java預熱班講義031.ppt_第1頁
Java預熱班講義031.ppt_第2頁
Java預熱班講義031.ppt_第3頁
Java預熱班講義031.ppt_第4頁
Java預熱班講義031.ppt_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、北京傳智播客教育 ,Java預熱班培訓課程,第三講 面向對象(上),講師:徐文海,北京傳智播客教育 ,面向對象,什么是面向對象 我們生活的社會是由各種形態(tài)不同的事物所組成,而事物與 事物之間都存在著各種各樣的聯系,正是這樣的思想構成了 面向對象編程思想的基礎。 如何用對象去解決碰到的問題 在程序中用對象來描述現實的事物,每一個事物都在程序中 都對應一個具體的對象,我們在程序中對對象進行操作來模 擬現實中事物之間的關系,這就是所謂的萬物皆對象。 面向對象編程的好處 代碼的復用性提高 使用者無須關心具體的實現細節(jié) 轉變程序員的角色,更加符合人的思維過慣,北京傳智播客教育 ,類的定義,為什么要定義類

2、 由于對象是虛擬出來的東西,是看不見摸不著的,我們需要在 程序中使用對象,就必須找到描述對象的方式,定義一個類就 可以解決這個問題。 什么是類 將一系列特征相似的對象中的共同屬性和方法抽象出來用一段 特殊的代碼來進行描述,這段特殊的代碼我們就稱之為一個類 類使用class關鍵字來進行定義,后面跟上類的名稱 如何通過類產生對象 使用new關鍵字根據定義好的類來創(chuàng)建對象。 對象稱之為類的實例,類是對象的抽象,北京傳智播客教育 ,類與對象,類是對某一類事物的描述,是抽象的、概念上的定義。 對象是實際存在的該類事物的每個個體,因而也稱實例(instance)。,如果將對象比作汽車,那么類就是汽車的設計

3、圖紙。所以面向對象程序設計的重點是類的設計,而不是對象的設計。,北京傳智播客教育 ,設計類,class Person int age; void shout() System.out.println(“oh,my god! I am “ + age); age是類的屬性 ,也叫類成員變量 。 shout是方法也叫類的成員函數(成員方法)。 shout方法可以直接訪問同一個類中的age變量 ,如果一個方法中有與成員變量同名的局部變量,該方法中對這個變量名的訪問是局部變量,而不再是成員變量。,北京傳智播客教育 ,對象的產生,Person p1 = new Person();執(zhí)行完后的內存狀態(tài),北京

4、傳智播客教育 ,成員變量初始化,當一個對象被創(chuàng)建時,會對其中各種類型的成員變量自動進行初始 化賦值?;緮祿愋统跏蓟禐?,引用數據類型初始化值為null,北京傳智播客教育 ,對象的使用,Person p1 = new Person(); Person p2 =new Person(); p1.age = -30; p1.shout(); p2.shout(); /執(zhí)行完內存中的狀態(tài),北京傳智播客教育 ,對象的生命周期,北京傳智播客教育 ,對象的生命周期,北京傳智播客教育 ,對象的生命周期,北京傳智播客教育 ,匿名對象,我們也可以不定義對象的句柄,而直接調用這個對象的方法。這樣的對象叫做匿名

5、對象, 如:new Person().shout(); 如果對一個對象只需要進行一次方法調用,那么就可以使用匿名對象。 我們經常將匿名對象作為實參傳遞給一個函數調用。,北京傳智播客教育 ,類的封裝,定義 所謂類的封裝就是將一組相似的對象所有共同屬性和方法都封裝 在一個類里面,這樣的類就可以用于將來描述同一類型的對象了。 封裝的特點 為了實現良好的封裝性,需要將類的屬性私有化(private),對外提供相應 的公有的get和set方法,方便別人的使用。 強內聚,弱耦合 封裝是保證軟件部件具有優(yōu)良模塊性的基礎,編寫程序時要盡量避免模塊之間的 相互依賴,降低這種依賴在程序變動時帶來的影響,這就是所謂

6、的“強內聚,弱耦合” 面向對象的封裝就是把描述一個對象的屬性和行為的代碼封裝在一個類當中,屬性 用變量定義,行為用方法來描述,方法可以直接訪問同一個類中的屬性,北京傳智播客教育 ,構造函數的定義與作用,構造函數的特征 函數的名稱與類相同 沒有返回值類型聲明 不能在方法中使用return語句返回一個值 注意:沒有返回值類型聲明不等同于”void”,void也是 一種返回值類型聲明,那就是沒有返回值。 構造函數的作用: 當我們使用new關鍵字來創(chuàng)建一個對象的時候,Java虛擬機會自動 調用構造函數,我們可以在構造函數中做一些初始化的事情。 例如,人一出生就要洗澡。,北京傳智播客教育 ,構造函數的具

7、體應用,構造函數可以重載 構造函數和一般的函數一樣,也可以重載,但參數列表必須不一致 構造函數如何被調用 使用new關鍵字創(chuàng)建對象的時候,會自動調用類的一個構造函數 可以在一個類的構造函數中使用this關鍵字去調用其他的構造函數 在調用構造函數時,具體調用哪個,就看括號里傳遞的實參類型 類必須定義構造函數 每一個類都至少有一個構造函數,如果在定義類時,沒有顯式地聲明任何構造函數,系統會自動為這個類創(chuàng)建一個無參的構造函數,里面沒有任何代碼 構造函數的訪問權限 在定義構造函數時,如無特殊需要,應使用public關鍵字進行修飾 在一些特殊的情況下會使用private關鍵字,北京傳智播客教育 ,thi

8、s關鍵字,this引用 this關鍵字一般用于方法內 this代表一個對象的引用 具體引用哪個對象,就看調用方法的是哪個對象 this關鍵字的應用場景 當在一個類中要明確指出使用對象自己的的變量或函數時就應該加上this引用 ,此時this是指當前對象自己。 當你要把自己作為參數傳遞給別的對象時,也可以用this關鍵字,此時this被作為參數傳遞。 在內部類中也會經常使用this關鍵字,此時this代表內部類對象,如想引用外部類對象,this前面還需要加上外部類的類名。 在構造函數中,可以使用this(實參)來調用該類的其他構造函數,此時,應注意,調用代碼只能在第一行,在別的方法中不能這樣調構

9、造函數,在一個構造函數中只能調一個構造函數,北京傳智播客教育 ,函數的參數傳遞,基本數據類型在參數傳遞過程中值不會被改變 在程序運行的過程中,將一個基本數據類型的變量作為參數傳遞給一個方法,當方法執(zhí)行完畢后,變量的值不會發(fā)生改變,原因在于方法中改變的只是定義的形參,不會對主函數中的參數進行改動。 引用數據類型在參數傳遞的過程中,其值會被改變 在程序運行的過程中將一個引用數據類型的變量傳遞給一個方法,在方法中對形參進行操作,當方法執(zhí)行完畢時,變量發(fā)生了改變,原因很簡單,在方法中其實是通過地址訪問到對象,這時是針對對象進行操作,而不是變量,說白了,變量中存的地址始終還是沒有改變,但是對象的狀態(tài)會發(fā)

10、生改變。,北京傳智播客教育 ,static關鍵字之靜態(tài)變量,用static修飾的變量為靜態(tài)變量 靜態(tài)變量被類的所有實例所共享 靜態(tài)變量可以使用 類名.變量名的方式訪問 靜態(tài)變量在類被加載時就完成了初始化,北京傳智播客教育 ,Static關鍵字之靜態(tài)方法,用static修飾的方法就是靜態(tài)方法 在類被加載后,就可以調用靜態(tài)方法了 可以使用類名.方法名的方式訪問 靜態(tài)方法內部不能直接訪問外部非靜態(tài)的成員 靜態(tài)方法在類被加載后就可以調用了,而非靜態(tài)的成員需要創(chuàng)建對象之后才能訪問,所以當然訪問不到 在靜態(tài)方法內部,只能通過創(chuàng)建該類的對象來訪問外部的非static的方法。 靜態(tài)方法中,不能使用this關鍵

11、字,因為沒有對象,this無從引用。 一般來講,方法為一種工具或者生產對象,我們就可以將方法設計為靜態(tài)的。 目的就是為了別人可以使用類名.方法名的方式調用我們設計的方法,而不需要自己 去創(chuàng)建對象。,北京傳智播客教育 ,靜態(tài)代碼塊,用static修飾的代碼塊為靜態(tài)代碼塊 靜態(tài)代碼塊在類被加載的時候就執(zhí)行了 靜態(tài)代碼塊一般用于做一些初始化的工作 靜態(tài)變量的初始化和靜態(tài)代碼塊的執(zhí)行哪個先? 注意:類什么時候被加載呢? 類是在第一次被使用的時候才進行加載,而且只加載一次,java虛 擬機啟動的時候不會把可能用到的類都加載進來,也不可能預知程 序中將會使用到哪些類。,北京傳智播客教育 ,垃圾回收過程分析

12、,java中的finalize()方法 對象在被回收之前,java虛擬機會自動調用finalize方法。 System.gc的作用 可以通過調用System.gc()來人工回收垃圾,北京傳智播客教育 ,什么是設計模式,針對某一問題的最佳解決方案,我們在程序中稱之為設計模式。 設計模式是在大量的實踐中總結和理論化之后優(yōu)選的代碼結構、編程風格、以及解決問題的思考方式。設計模式就像是經典的棋譜,不同的棋局,我們用不同的棋譜,免得我們自己再去思考和摸索。,北京傳智播客教育 ,單態(tài)設計模式,定義 所謂類的單態(tài)設計模式,就是采取一定的方法保證在整個的軟件系統 中,對某個類只能存在一個對象實例,并且該類只提

13、供一個取得其對 象實例的方法。 單態(tài)設計模式的特征 將構造方法私有化。 對外提供一個公有的get方法,讓別人通過此方法來獲得實例。 由于不能創(chuàng)建對象,所以get方法必須靜態(tài),這樣別人才能使用類名.方法名的方式訪問。 需要保證單例,所以要提供一個靜態(tài)變量記住一個實例,用于返回。 該實例應該私有,禁止外界通過直接訪問進行改動。,北京傳智播客教育 ,理解main方法的語法,由于java虛擬機需要調用類的main()方法,所以該方法的訪問 權限必須是public,又因為java虛擬機在執(zhí)行main()方法時不必 創(chuàng)建對象,所以該方法必須是static的,該方法接收一個String 類型的數組參數,該數

14、組中保存執(zhí)行java命令時傳遞給所運行 的類的參數。,北京傳智播客教育 ,內部類,可以在類中定義類 在類里面定義的類稱之為內部類,內部類是外部類的一個成員 引用方式:Outer.Inner inner = new Outer().new Inner(); 內部類可以直接訪問外部類的成員,而外部類不能直接訪問內部類的成員 可以在方法中定義類 方法中定義的內部類不能訪問方法中定義的局部變量,除非這個局部變量被聲明為final的 可以在方法中定義匿名內部類 應用場景:一次性使用 注意:匿名內部類為當前類名所表示的類的子類,北京傳智播客教育 ,static修飾的內部類,static修飾的內部類為靜態(tài)內部類 非靜態(tài)的內部類中不能聲明靜態(tài)的成員 因為靜態(tài)成員不需要創(chuàng)建對象,可以通過類名.變量名的方式訪問,如果內部類非靜態(tài),我們就不能通過.直接訪問內部類,也就訪問不到static變量。 static修飾的內部類中可以定義非static修飾的成員 static內部類中不能訪問外部非static的成員,北京傳智播客教育 ,使用Java的文檔注釋,文檔注釋以“/*”開始,以“*/”標志結束,相應的信息和批注所對應的

溫馨提示

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

評論

0/150

提交評論