“面向?qū)ο笏枷牒秃诵闹唤凶龆鄳B(tài)性,什么叫多態(tài)性屎蜓?說(shuō)白了就是在某個(gè)粒度視圖層面上對(duì)同類(lèi)事物不加區(qū)別的對(duì)待而統(tǒng)一處理痘昌。而之所以敢這樣做,就是因?yàn)橛薪涌诘拇嬖诰孀O衲莻€(gè)遺傳學(xué)家辆苔,他明白所有生物都實(shí)現(xiàn)了IDescendable接口,那只要是生物扼劈,一定有Descend()這個(gè)方法驻啤,于是他就可以統(tǒng)一研究,而不至于分別研究每一種生物而最終累死荐吵。”
官方回答多態(tài):
“通過(guò)上文骑冗,我想大家對(duì)接口和接口的思想內(nèi)涵有了一個(gè)了解徽鼎,那么什么是面向接口編程呢径密?我個(gè)人的定義是:在系統(tǒng)分析和架構(gòu)中膊毁,分清層次和依賴(lài)關(guān)系砸王,每個(gè)層次不是直接向其上層提供服務(wù)(即不是直接實(shí)例化在上層中),而是通過(guò)定義一組接口德绿,僅向上層暴露其接口功能酌摇,上層對(duì)于下層僅僅是接口依賴(lài)鉴吹,而不依賴(lài)具體類(lèi)良风∫昶”
這樣做的好處是顯而易見(jiàn)的,首先對(duì)系統(tǒng)靈活性大有好處烟央。當(dāng)下層需要改變時(shí)统诺,只要接口及接口功能不變,則上層不用做任何修改疑俭。甚至可以在不改動(dòng)上層代碼時(shí)將下層整個(gè)替換掉粮呢,就像我們將一個(gè)WD的60G硬盤(pán)換成一個(gè)希捷的160G的硬盤(pán),計(jì)算機(jī)其他地方不用做任何改動(dòng)钞艇,而是把原硬盤(pán)拔下來(lái)啄寡、新硬盤(pán)插上就行了,因?yàn)橛?jì)算機(jī)其他部分不依賴(lài)具體硬盤(pán)哩照,而只依賴(lài)一個(gè)IDE接口挺物,只要硬盤(pán)實(shí)現(xiàn)了這個(gè)接口,就可以替換上去飘弧。從這里看识藤,程序中的接口和現(xiàn)實(shí)中的接口極為相似,所以我一直認(rèn)為次伶,接口(interface)這個(gè)詞用的真是神似痴昧!
抽象和Interface都可以認(rèn)為是多態(tài)的一種實(shí)現(xiàn)。
抽象類(lèi):
在abstract class中可以有自己的數(shù)據(jù)成員冠王,也可以有非abstarct的成員方法赶撰,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是static final的柱彻,不過(guò)在interface中一般不定義數(shù)據(jù)成員)豪娜,所有的成員方法都是abstract的。
異常Exception.
目的: maintain the normal flow of the application
Checked Exception和unchecked Exception:
1) Checked Exception
The classes that extend Throwable class except RuntimeException and Error are known as checked exceptions e.g.IOException, SQLException etc. Checked exceptions are checked at compile-time.
The classes that extend RuntimeException are known as unchecked exceptions e.g. ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException etc. Unchecked exceptions are not checked at compile-time rather they are checked at runtime. 也就是說(shuō)compile code的時(shí)候不會(huì)知道有問(wèn)題绒疗,真正運(yùn)行的時(shí)候才知道要GG侵歇。
封裝Encapsulation:?
把code和data打包成single unit.
Java 異常處理: catch, finally block:
Finally is used to place important code, it will be executed whether exception is handled or not.
Unit Testing:
JUnit is aRegression Testing Frame work?used by developers to implement unit testing in Java, and accelerate programming speed and increase the quality of code.?
Java的回收機(jī)制:
1、jvm會(huì)把沒(méi)有引用的實(shí)例當(dāng)做垃圾
2吓蘑、系統(tǒng)會(huì)自動(dòng)調(diào)用垃圾回收的線(xiàn)程進(jìn)行垃圾回收
3惕虑、當(dāng)主動(dòng)調(diào)用垃圾回收(比如:System.gc()),并不會(huì)馬上回收
需要注意的是:垃圾回收回收的是無(wú)任何引用的對(duì)象占據(jù)的內(nèi)存空間而不是對(duì)象本身