相關(guān)概念
封裝,繼承,多態(tài).這個應(yīng)該是人人皆知.有時候也會加上抽象.
允許不同類對象對同一消息做出響應(yīng),即同一消息可以根據(jù)發(fā)送對象的不同而采用多種不同的行為方式(發(fā)送消息就是函數(shù)調(diào)用).主要有以下優(yōu)點:
可替換性:多態(tài)對已存在代碼具有可替換性.
可擴充性:增加新的子類不影響已經(jīng)存在的類結(jié)構(gòu).
接口性:多態(tài)是超累通過方法簽名,想子類提供一個公共接口,由子類來完善或者重寫它來實現(xiàn)的.
靈活性:
簡化性:
實現(xiàn)多態(tài)主要有以下三種方式: 1. 接口實現(xiàn) 2. 繼承父類重寫方法 3. 同一類中進行方法重載
動態(tài)綁定技術(shù)(dynamic binding),執(zhí)行期間判斷所引用對象的實際類型,根據(jù)實際類型調(diào)用對應(yīng)的方法.
接口的意義用三個詞就可以概括:規(guī)范,擴展,回調(diào).
抽象類的意義可以用三句話來概括:
為其他子類提供一個公共的類型
封裝子類中重復(fù)定義的內(nèi)容
定義抽象方法,子類雖然有不同的實現(xiàn),但是定義時一致的 ## 接口和抽象類的區(qū)別
比較抽象類接口
默認方法抽象類可以有默認的方法實現(xiàn),java 8之前,接口中不存在方法的實現(xiàn).
實現(xiàn)方式子類使用extends關(guān)鍵字來繼承抽象類.如果子類不是抽象類,子類需要提供抽象類中所聲明方法的實現(xiàn).子類使用implements來實現(xiàn)接口,需要提供接口中所有聲明的實現(xiàn).
構(gòu)造器抽象類中可以有構(gòu)造器,接口中不能
和正常類區(qū)別抽象類不能被實例化接口則是完全不同的類型
訪問修飾符抽象方法可以有public,protected和default等修飾接口默認是public,不能使用其他修飾符
多繼承一個子類只能存在一個父類一個子類可以存在多個接口
添加新方法想抽象類中添加新方法,可以提供默認的實現(xiàn),因此可以不修改子類現(xiàn)有的代碼如果往接口中添加新方法,則子類中需要實現(xiàn)該方法.
不能.子類繼承父類后,有相同的靜態(tài)方法和非靜態(tài),這是非靜態(tài)方法覆蓋父類中的方法(即方法重寫),父類的該靜態(tài)方法被隱藏(如果對象是父類則調(diào)用該隱藏的方法),另外子類可集成父類的靜態(tài)與非靜態(tài)方法,至于方法重載我覺得它其中一要素就是在同一類中,不能說父類中的什么方法與子類里的什么方法是方法重載的體現(xiàn).
不可變對象指對象一旦被創(chuàng)建,狀態(tài)就不能再改變。任何修改都會創(chuàng)建一個新的對象,如 String、Integer及其它包裝類。
當然可以創(chuàng)建一個包含可變對象的不可變對象的,你只需要謹慎一點,不要共享可變對象的引用就可以了,如果需要變化時,就返回原對象的一個拷貝。最常見的例子就是對象中包含一個日期對象的引用.
采用new
通過反射
采用clone
通過序列化機制
前2者都需要顯式地調(diào)用構(gòu)造方法. 造成耦合性最高的恰好是第一種,因此你發(fā)現(xiàn)無論什么框架,只要涉及到解耦必先減少new的使用.
在idk 1.7之前,switch只能支持byte,short,char,int或者其對應(yīng)的封裝類以及Enum類型。從idk 1.7之后switch開始支持String.
equals()
clone()
getClass()
notify(),notifyAll(),wait()
強引用,軟引用,弱引用,虛引用.不同的引用類型主要體現(xiàn)在GC上:
強引用:如果一個對象具有強引用,它就不會被垃圾回收器回收。即使當前內(nèi)存空間不足,JVM也不會回收它,而是拋出 OutOfMemoryError 錯誤,使程序異常終止。如果想中斷強引用和某個對象之間的關(guān)聯(lián),可以顯式地將引用賦值為null,這樣一來的話,JVM在合適的時間就會回收該對象
軟引用:在使用軟引用時,如果內(nèi)存的空間足夠,軟引用就能繼續(xù)被使用,而不會被垃圾回收器回收,只有在內(nèi)存不足時,軟引用才會被垃圾回收器回收。
弱引用:具有弱引用的對象擁有的生命周期更短暫。因為當 JVM 進行垃圾回收,一旦發(fā)現(xiàn)弱引用對象,無論當前內(nèi)存空間是否充足,都會將弱引用回收。不過由于垃圾回收器是一個優(yōu)先級較低的線程,所以并不一定能迅速發(fā)現(xiàn)弱引用對象
虛引用:顧名思義,就是形同虛設(shè),如果一個對象僅持有虛引用,那么它相當于沒有引用,在任何時候都可能被垃圾回收器回收。
好了同學(xué)們,我能介紹的也都全部介紹完給你們了,如果下獲得更多JAVA教學(xué)資源,可以選擇來我們這里共同交流,群:240448376,很多大神在這里切磋學(xué)習(xí),不懂可以直接問,晚上還有大牛免費直播教學(xué)。
注:加群要求
1、具有一定工作經(jīng)驗的,面對目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加,有些應(yīng)屆生和實習(xí)生也可以加。
2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內(nèi)進修、跳槽拿高薪的可以加。
3、如果沒有工作經(jīng)驗,但基礎(chǔ)非常扎實,對java工作機制,常用設(shè)計思想,常用java開發(fā)框架掌握熟練的,可以加。
4、覺得自己很牛B,一般需求都能搞定。但是所學(xué)的知識點沒有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加。
5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經(jīng)驗的梳理和總結(jié),帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認知!
PS:現(xiàn)在主要講解的內(nèi)容是(反射原理、枚舉原理與應(yīng)用、注解原理、常用設(shè)計模式、正規(guī)表達式高級應(yīng)用、JAVA操作Office原理詳解、JAVA圖像處理技術(shù),等多個知識點的詳解和實戰(zhàn))
6.小號或者小白之類加群一律不給過,謝謝。
最后,每一位讀到這里的網(wǎng)友,感謝你們能耐心地看完。覺得對你有幫助可以給個喜歡!希望在成為一名更優(yōu)秀的Java程序員的道路上,我們可以一起學(xué)習(xí)、一起進步