java面向?qū)ο笾R(shí)點(diǎn)總結(jié)_第1頁(yè)
java面向?qū)ο笾R(shí)點(diǎn)總結(jié)_第2頁(yè)
java面向?qū)ο笾R(shí)點(diǎn)總結(jié)_第3頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 類(lèi)和對(duì)象1.1 類(lèi):類(lèi)是用來(lái)描述一類(lèi)事物的共性?xún)?nèi)容的, 類(lèi)是抽象的 ;創(chuàng)建類(lèi) ,如何描述屬性功能用變量來(lái)描述屬性用方法來(lái)描述功能1.2 對(duì)象 :就是現(xiàn)實(shí)中具體的事物 ,對(duì)象是具體的 ;創(chuàng)建對(duì)象類(lèi)名對(duì)象名=new 類(lèi)名 ();如何通過(guò)對(duì)象訪問(wèn)類(lèi)中屬性和方法呢?對(duì)象名 .變量名對(duì)象名 .方法名 ();只要是 new 的對(duì)象 ,就是新創(chuàng)建的 ,就會(huì)在內(nèi)存中開(kāi)辟一段單獨(dú)的空間1.2 匿名對(duì)象創(chuàng)建的對(duì)象沒(méi)有賦值給具體的變量;所以給匿名對(duì)象的屬性賦值是沒(méi)有任何意義的;匿名對(duì)象使用場(chǎng)景1 調(diào)用方法2 作為參數(shù)傳遞3 添加進(jìn)容器中1.3This關(guān)鍵字This. 類(lèi)中的普通方法訪問(wèn)到的成員前邊都有this.

2、這個(gè)關(guān)鍵字This.就代表當(dāng)前對(duì)象 ,普通方法 , 創(chuàng)建對(duì)象調(diào)方法 ,誰(shuí)調(diào)用就代表誰(shuí)This(); 可以用來(lái)在構(gòu)造函數(shù)中調(diào)用本類(lèi)與之相對(duì)應(yīng)的構(gòu)造函數(shù)使用注意事項(xiàng) :1 this() 只能是構(gòu)造函數(shù)的第一條執(zhí)行語(yǔ)句2 this()不能在構(gòu)造函數(shù)之間相互調(diào)用3 this()不能調(diào)用自己1.4 構(gòu)造函數(shù) (方法 )1.4.1 構(gòu)造函數(shù)的作用用來(lái)給對(duì)象進(jìn)行初始話的(初始化就是指給對(duì)象的各個(gè)屬性賦值)1.4.2 構(gòu)造函數(shù)何時(shí)執(zhí)行對(duì)象一創(chuàng)建就會(huì)調(diào)用與之相對(duì)應(yīng)的構(gòu)造函數(shù)1.4.3 構(gòu)造函數(shù)語(yǔ)法修飾符沒(méi)有返回值類(lèi)型類(lèi)名 (參數(shù)列表 )具體執(zhí)行的代碼1.4.4 構(gòu)造函數(shù)自動(dòng)添加當(dāng)一個(gè)類(lèi)中我們沒(méi)有明確指定構(gòu)造函數(shù)

3、的話,jvm 會(huì)自動(dòng)幫我們添加一個(gè)空參數(shù)的構(gòu)造 ,如果我們指定了 ,就不添加了1.5.5 構(gòu)造函數(shù)和普通函數(shù)的區(qū)別5.1 執(zhí)行時(shí)機(jī)不同對(duì)象一創(chuàng)建就會(huì)調(diào)用與之相對(duì)應(yīng)的構(gòu)造函數(shù)普通函數(shù)只有被調(diào)用才會(huì)執(zhí)行1.5 return1 就是用來(lái)在方法中返回具體結(jié)果(結(jié)果類(lèi)型必須和方法的返回值類(lèi)型一致)2 即便方法的返回值類(lèi)型是void,方法中也可以出現(xiàn)return;3 構(gòu)造函數(shù)中也可以有return 關(guān)鍵字1.6 成員變量和 局部變量1 作用范圍不同 , 成員變量是定義在類(lèi)中的,在整個(gè)類(lèi)中都起作用局部變量是定義在方法中的,在所在代碼塊起作用2 初始值不同 ,成員變量有默認(rèn)初始值 ,不用賦值 ,也能直接時(shí)候局

4、部變量 ,沒(méi)有初始值 ,必須得賦值以后才能使用2 封裝2.1 staticStatic 是用來(lái)修飾類(lèi)中成員成員變量成員方法被 static 修飾的成員 ,就多了一種調(diào)用方式 ,可以被類(lèi)名直接調(diào)用了2.1.1 修飾成員變量該變量在內(nèi)存中只會(huì)保存一份 ,被類(lèi)和所有對(duì)象共享 , 那么一個(gè)對(duì)象對(duì)其進(jìn)行修改 ,會(huì)影響到其他對(duì)象 ,為了不影響其他對(duì)象 ,經(jīng)常會(huì)把靜態(tài)變量搞成常量 ,被 final 修飾 ;2.1.2 修飾成員方法靜態(tài)方法中只能訪問(wèn)靜態(tài)成員普通方法中都能訪問(wèn) ;靜態(tài)方法中不能出現(xiàn)this,super 關(guān)鍵字Main 函數(shù)是靜態(tài)的 ;那么我們定義方法時(shí) ,什么時(shí)候定義靜態(tài) ,什么時(shí)候定義非靜態(tài)

5、 ?當(dāng)方法中使用到了普通 (非靜態(tài) )成員的話 ,就不能定義成靜態(tài)的 ;2.1.3 static 代碼塊(靜態(tài)代碼塊 )用來(lái)給類(lèi)進(jìn)行初始話(給類(lèi)中的靜態(tài)成員進(jìn)行初始化)會(huì)隨著類(lèi)的加載而執(zhí)行 (只會(huì)執(zhí)行一次 )2.2 封裝就是隱藏類(lèi)中的某些成員;僅對(duì)外提供公共的訪問(wèn)方式封裝三步走 :1 私有屬性2 提供 set 和 get 方法供外界給對(duì)象設(shè)置值和獲取值3 在方法中添加具體的存取限制2.3 包和權(quán)限修飾符2.3.1 類(lèi)權(quán)限修飾符可以用來(lái)修飾兩種東西:Public該類(lèi)在其他包中也可以訪問(wèn)(首先要導(dǎo)包import)默認(rèn)2.3.2類(lèi)中成員Publicprotected默認(rèn) private本類(lèi)中是否能訪

6、問(wèn)本包其他類(lèi)其他包Public能能能默認(rèn)能能不能Private能不能不能包1 創(chuàng)建包包的作用1 便于管理2 防止命名沖突 ;3 包 也是封裝的一種方式 ,可以在更廣的范圍保護(hù)類(lèi)3 繼承某個(gè)類(lèi)可以 通過(guò)extends 繼承其他的類(lèi)一個(gè)類(lèi)繼承了另外一個(gè)類(lèi)以后,就繼承了所有的非私有的屬性和方法注意事項(xiàng)1 java 中只允許單繼承 ; 不允許多繼承 , 但是允許多層繼承2 何時(shí)繼承 ?AisB;繼承發(fā)生以后類(lèi)中成員的特點(diǎn)1 成員變量當(dāng)子類(lèi)和父類(lèi)的成員變量同名是 ,子類(lèi)中優(yōu)先使用子類(lèi)自己的 . 可以通過(guò) super.調(diào)用父類(lèi)的成員變量和成員方法 ;2 成員方法子父類(lèi)具有相同的功能 ,但是子類(lèi)有自己具體的

7、實(shí)現(xiàn) ,這個(gè)時(shí)候子類(lèi)是沒(méi)有必要重新定義一個(gè)方法的 ,只需要重寫(xiě)父類(lèi)就行了 ;重寫(xiě) (覆蓋 )1 前提 ,存在繼承和 實(shí)現(xiàn)關(guān)系2 方法名一樣 ,參數(shù)列表一樣 ,返回值類(lèi)型一樣 (jdk5 以后要求子類(lèi)的返回值類(lèi)型是父類(lèi)返回值類(lèi)型的子類(lèi)也行 )3 子類(lèi)方法的權(quán)限不能小于父類(lèi)4 子類(lèi)方法不能拋出比父類(lèi)更多的異常重載同一個(gè)類(lèi)中 ,方法名一樣 ,參數(shù)列表不一樣 (參數(shù)數(shù)量 , 參數(shù)類(lèi)型 ),與返回值類(lèi)型無(wú)關(guān)3 構(gòu)造函數(shù)1 構(gòu)造函數(shù)是不能繼承的 ;2 但是子類(lèi)可以在構(gòu)造函數(shù)中通過(guò)super()調(diào)用父類(lèi)與之相對(duì)應(yīng)的構(gòu)造3 如果子類(lèi)構(gòu)造函數(shù)首行沒(méi)有明確指定 this(), super(“”);這樣的語(yǔ)句的話

8、,其實(shí)是有一天隱式語(yǔ)句 super(),調(diào)用父類(lèi)空參數(shù)構(gòu)造 ,如果父類(lèi)沒(méi)有空參數(shù)構(gòu)造的話 ,子類(lèi)是會(huì)報(bào)錯(cuò)的 ;4 如果子類(lèi)首行有 this() 這樣的語(yǔ)句的話 ,就沒(méi)有隱式語(yǔ)句super();5 不論子類(lèi)的第一行有沒(méi)有this(),super(); 創(chuàng)建子類(lèi)對(duì)象的時(shí)候一定會(huì)調(diào)用到父類(lèi)的某個(gè)構(gòu)造 ;4 與上帝相關(guān)Object1 任何類(lèi) java 中自帶的類(lèi) ,或者是我們自定義的類(lèi) , 都直接或間接的繼承自O(shè)bject;2 如果某個(gè)類(lèi)沒(méi)有明確指定父類(lèi)的話 ,那么這個(gè)類(lèi)就默認(rèn)繼承自O(shè)bject;3 所有 Object 中定義的方法所有 java 對(duì)象都可以調(diào)用4 比如 toString()equal

9、s(Object object)5 直接打印對(duì)象的話 .我們發(fā)現(xiàn)出現(xiàn)的是對(duì)象的內(nèi)存地址值 ,因?yàn)榇蛴?duì)象就是打印的對(duì)象的 toString()方法的返回值 . 而 Object 身上定義的 toString 方法返回的就是對(duì)象的內(nèi)存地址值 ,這個(gè)時(shí)候這需要我們重寫(xiě)toString 方法以后 ,調(diào)用的就是子類(lèi)自己的toString 方法了5 抽象類(lèi)1 發(fā)現(xiàn)該類(lèi)事物都具備該功能,但是不確定如何實(shí)現(xiàn) ,就可以定義成抽象方法2 抽象方法特點(diǎn)沒(méi)有方法體 , 被 abstract 修飾3 如果一個(gè)類(lèi)中有抽象方法,這個(gè)類(lèi)也必須得是抽象類(lèi)4 如果一個(gè)類(lèi)繼承了抽象類(lèi)以后 ,這個(gè)類(lèi)要么是抽象的 ,要么必須實(shí)現(xiàn)抽象

10、類(lèi)中的所有抽象方法5 抽象類(lèi)和普通類(lèi)的不同 ;抽象類(lèi)不能被實(shí)例化對(duì)象;6 為什么不能實(shí)例化對(duì)象因?yàn)閯?chuàng)建對(duì)象以后就可以通過(guò)對(duì)象調(diào)用抽象類(lèi)中沒(méi)有方法體的抽象方法了 ,這樣是沒(méi)有意義的 ,為了不讓調(diào)用 ,干脆就不讓創(chuàng)建對(duì)象了 ;7 抽象類(lèi)有沒(méi)有構(gòu)造函數(shù) ?抽象類(lèi)天生就是被繼承的,然后創(chuàng)建子類(lèi)對(duì)象的時(shí)候一定會(huì)調(diào)用到父類(lèi)構(gòu)造8 抽象類(lèi)中可以沒(méi)有抽象方法;6 Final1常量不能重新賦值2類(lèi)該類(lèi)不能被繼承不能派生子類(lèi)3方法該方法不能被重寫(xiě) (覆蓋 )7 Abstract修飾方法和三個(gè)關(guān)鍵字沖突1 final2 static3 private8 super關(guān)鍵字1super. 指代父類(lèi)對(duì)象的引用可以通過(guò) s

11、uper.調(diào)用父類(lèi)的屬性和方法2 可以通過(guò) super() 在構(gòu)造函數(shù)中調(diào)用父類(lèi)與之相對(duì)應(yīng)的構(gòu)造函數(shù)4 多態(tài)4.1 多態(tài)的體現(xiàn)Animal animal = new Pig();父類(lèi)的引用指向了子類(lèi)對(duì)象左邊聲明的是父類(lèi) ,右邊創(chuàng)建的是子類(lèi) ;4.2 多態(tài)的前提存在繼承或?qū)崿F(xiàn)關(guān)系4.3 多態(tài)的好處簡(jiǎn)化了代碼 ;大大提高了程序擴(kuò)張性 ;4.4 多態(tài)的弊端只能調(diào)用父類(lèi)共有的方法,不能調(diào)用子類(lèi)特有的方法4.5 多態(tài)的應(yīng)用Animal animal = new Pig();能不能調(diào)用看左邊 ,具體調(diào)用誰(shuí)的看右邊 ;非要調(diào)用子類(lèi)特有的方法需要強(qiáng)轉(zhuǎn),向下轉(zhuǎn)型 :強(qiáng)制把父類(lèi)的應(yīng)用轉(zhuǎn)成子類(lèi)對(duì)象;向下轉(zhuǎn)型容易出問(wèn)

12、題 ,為了防止類(lèi)型映射異常 ,最好在強(qiáng)轉(zhuǎn)以前進(jìn)行類(lèi)型判斷;Instanceof4.6 多態(tài)的應(yīng)用場(chǎng)景4.6.1 定義方法的時(shí)候 ,形式參數(shù)的類(lèi)型聲明為父類(lèi) ,這樣調(diào)用方法的時(shí)候就可以傳遞該父類(lèi)的任意子類(lèi)對(duì)象進(jìn)來(lái)了 ;4.6.2以父類(lèi)作為方法的返回值類(lèi)型,5 接口1 如何定義一個(gè)接口 , interface2 初期理解 ,接口就是里邊都是抽象方法的抽象類(lèi)3 接口中成員 接口中只能有兩種成員3.1 抽象方法3.2 靜態(tài)常量4 接口中的成員都有固定的修飾符,可以省略抽象方法的public abstract靜態(tài)常量的public final static5 接口和抽象類(lèi)都不能實(shí)例化對(duì)象6 接口是沒(méi)有構(gòu)

13、造函數(shù)的 ,7 接口支持多實(shí)現(xiàn) implements A,B,C ,D8 一個(gè)類(lèi)在繼承了一個(gè)類(lèi)的同 時(shí)還可以實(shí)現(xiàn)多個(gè)接口9 接口和接口之間也有關(guān)系 ,是繼承關(guān)系10 接口和接口之間支持多繼承2 何時(shí)使用接口2.1接口是額外的功能2.2接口預(yù)先定義好的規(guī)則6 異常程序運(yùn)行中的不正常事件,會(huì)導(dǎo)致程序終止運(yùn)行 ,1 tryTry可能出現(xiàn)異常的代碼2 catchCatch(要捕獲的異常對(duì)象 )捕獲住異常執(zhí)行的代碼 ;e.printStackTrace();3 finallyFinally不論是否發(fā)生異常 ;不論發(fā)生異常之后能不能捕獲住異常,都會(huì)執(zhí)行的代碼即便 try catch 中有 return 語(yǔ)句 ,也是先執(zhí)行完 finally 中的代碼 ,再 return;Finally 不執(zhí)行的唯一情況是try catch 中碰到 System.exit(1);4 多重 catch語(yǔ)句塊 ;Try 中代碼發(fā)生異常以后 ,會(huì)從上往下依次匹配 catch 代碼塊 ,匹配上某一個(gè)的話就不繼續(xù)往下匹配了 ;我們經(jīng)常會(huì)在多個(gè) catch 的最后 catch 一個(gè)最大的 Exception, 起一個(gè)兜底的操作 , 就是即便發(fā)生了我們沒(méi)有預(yù)料到的異常 ,程序也不會(huì)終止掉 ,并且 最大的異常應(yīng)該放在最后一個(gè) catch 塊;5throwsthrowThrows 用來(lái)在方法上拋出多個(gè)異常類(lèi)的,各個(gè)異常類(lèi)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論