“面向對象思想和核心之一叫做多態性,什么叫多態性?說白了就是在某個粒度視圖層面上對同類事物不加區別的對待而統一處理。而之所以敢這樣做,就是因為有接口的存在。像那個遺傳學家,他明白所有生物都實現了IDescendable接口,那只要是生物,一定有Descend()這個方法,于是他就可以統一研究,而不至于分別研究每一種生物而最終累死。”
官方回答多態:
“通過上文,我想大家對接口和接口的思想內涵有了一個了解,那么什么是面向接口編程呢?我個人的定義是:在系統分析和架構中,分清層次和依賴關系,每個層次不是直接向其上層提供服務(即不是直接實例化在上層中),而是通過定義一組接口,僅向上層暴露其接口功能,上層對于下層僅僅是接口依賴,而不依賴具體類。”
這樣做的好處是顯而易見的,首先對系統靈活性大有好處。當下層需要改變時,只要接口及接口功能不變,則上層不用做任何修改。甚至可以在不改動上層代碼時將下層整個替換掉,就像我們將一個WD的60G硬盤換成一個希捷的160G的硬盤,計算機其他地方不用做任何改動,而是把原硬盤拔下來、新硬盤插上就行了,因為計算機其他部分不依賴具體硬盤,而只依賴一個IDE接口,只要硬盤實現了這個接口,就可以替換上去。從這里看,程序中的接口和現實中的接口極為相似,所以我一直認為,接口(interface)這個詞用的真是神似!
抽象和Interface都可以認為是多態的一種實現。
抽象類:
在abstract class中可以有自己的數據成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態的不能被修改的數據成員(也就是必須是static final的,不過在interface中一般不定義數據成員),所有的成員方法都是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. 也就是說compile code的時候不會知道有問題,真正運行的時候才知道要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的回收機制:
1、jvm會把沒有引用的實例當做垃圾
3、當主動調用垃圾回收(比如:System.gc()),并不會馬上回收
需要注意的是:垃圾回收回收的是無任何引用的對象占據的內存空間而不是對象本身