JAVA中的幾句箴言:java
抽象類和接口中均可以包含靜態成員變量設計
抽象類中能夠包含靜態方法,接口內不能包含靜態方法繼承
abstract不能實例化,只能繼承,能夠有抽象成員接口
抽象類是對類抽象,而接口是對行爲的抽象。開發
接口:自己沒有任何實現,由於Java不涉及表象,而之描述public行爲,因此Java接口比Java抽象類更爲抽象化。Java的接口能夠有public,靜態的和final的屬性。模板
抽象類:不想給出定義,百度給出的定義過高深。不適合我這種小白。效率
一、爲何接口內的成員只能是靜態的?變量
因爲接口不能實例化,非靜態成員只能經過實例調用,因此必須定義爲static的百度
二、爲何抽象類也不能被實例化,但抽象類裏面能夠定義非靜態的: 方法
因爲子類與抽象類的關係中,子類繼承抽象類,子類實例化,首先要執行父類的構造器,有構造器就有實例化。
三、爲何使用接口?
接口在實際開發過程當中最大好處是,你能夠按照設計,先把接口寫好,而後分配大夥幹活的時候,告訴a們去用寫好的接口去實現他們的具體功能,而告訴b們,去寫那些已經寫好可是沒有具體的代碼的接口,這樣能夠提升工做效率。對了,另外接口解決了java不能多繼承的問題。
四、爲何使用抽象類:
抽象類爲子類提煉出公共的方法,並提供一個或幾個抽象方法留給子類實現;抽象類的設計體現了模板模式的設計思想,即抽象類公共的普通方法依賴一個抽象方法,而抽象方法則推遲到子類中實現細節。