Java基礎鏈接整理

Java基礎整理

Java基礎知識整理:https://www.cnblogs.com/chenhao0302/p/7125874.html

一、對象

1、對象的三大特性:封裝、多態、繼承

2、對象的創建一般分爲三步:

聲明:聲明一個對象,包括對象名稱和對象類型

實例化:使用關鍵字new來創建一個對象

初始化:使用new創建對象時,會調用構造方法初始化對象

3、類是對象的模板,對象是類的實例。

4引用數據類型與基本數據類型最大的不同在於:引用數據類型需要內存的分配和使用。所以,關鍵字new的主要功能就是分配內存空間,也就是說,只要使用引用數據類型,就要使用關鍵字new來分配內存空間

5、任何情況下,只要看見new關鍵字都表示要分配新的堆內存空間,一旦堆內存空間分配了,裏面就會有類中定義的屬性,並且屬性內容都是其對應數據類型的默認值。

6引用傳遞的精髓:同一塊堆內存空間,可以同時被多個棧內存所指向,不同的棧可以修改同一塊堆內存的內容。

7以後定義類的時候,最好所有屬性都要編寫private封裝,封裝之後的屬性如果需要被外部操作,則編寫settergetter

8匿名對象由於沒有對應的棧內存指向,所以只能使用一次,一次之後就將成爲垃圾,並且等待被GC回收釋放。

類和對象詳解(一):http://blog.csdn.net/wei_zhi/article/details/52745268

類和對象詳解(二):http://blog.csdn.net/wei_zhi/article/details/52750933

實例化與構造函數:https://www.cnblogs.com/bboyxiaoming/archive/2011/11/02/2233164.html

實例化的幾種方法:http://www.jb51.net/article/112006.htm

二、抽象(abstract

抽象方法是指沒有方法體的方法,使用abstract關鍵詞做修飾,擁有抽象方法的類就是抽象類,也是使用abstract關鍵詞做修飾,另外,抽象類除了包含抽象方法外,還可以包含具體的變量和具體的方法。類即使不包含抽象方法,也可以被聲明爲抽象類,防止被實例化

使用原則:

1. 抽象方法必須爲public或者protected(因爲如果是private,則子類無法繼承,該方法無法被實現),缺省情況下默認爲public

2. 抽象方法不能直接實例化(即不能對直接通過new進行實例化),需要依靠子類採用向上轉型的方式處理;

3. 抽象類必須有子類,採用extends繼承,一個子類只能繼承一個抽象類;

4. 子類(如果不是抽象類)需要覆蓋抽象類中全部的抽象方法,倘若子類沒有全部實現,則需要將子類也定義爲抽象類;

5. 抽象類的構造方法,子類實現時,會先執行父類構造方法,而後執行子類構造方法。換句話說,抽象類具有構造函數,這些構造函數總是當具體子類被實例化時才調用

6. 抽象類不能聲明final(抽象類必須有子類繼承,而final定義的類不能有子類);

7. 外部抽象類不允許使用static聲明,內部抽象類可以使用static聲明(繼承時使用“外部類名.內部類名”形式表示類名);

8. 抽象類中可以調用static方法;

9. 抽象類也可以繼承實體類,也可以實現接口,沒有什麼特別的限制

10. abstract 不能與privatestaticfinalnative並列修飾同一個方法。

抽象類詳解:http://blog.csdn.net/wei_zhi/article/details/52736350

抽象類的概念和使用:http://blog.csdn.net/eff666/article/details/52324985

抽象類:http://www.cnblogs.com/chenssy/p/3376708.html

三、接口

接口:接口通常以interface來聲明,接口是一個特殊的類,這個類裏面只有全局變量和抽象方法,沒有構造方法。

接口的使用:

1、由於接口裏面有抽象方法,所以接口對象不能直接是用關鍵字new實例化,接口對象可以利用子類對象的向上轉型進行實例化;

2、接口必須要有子類,但一個子類可以使用implements實現多個接口;

3、接口的子類(如果不是抽象類),必須覆寫接口中的全部抽象方法;

4、對於子類而言,既可以繼承抽象類,又可以實現接口;

5、 接口裏面只有全局變量和抽象方法,所以可以省略public static finalpublic abstract,接口中的訪問權限只有一種:public因爲接口中默認是public修飾,若子類中沒用public修飾,則訪問權限變嚴格了,給子類分配的是更低的訪問權限,所以建議接口方法前加public;

6、一個抽象類(或實體類)只能繼承一個抽象父類(或實體父類),但一個接口可以繼承多個接口;

Java8(JDK8)中在接口中引入了default默認方法,它是一個接口的是實現方法,可以用來繼承,默認方法允許接口方法定義默認實現,而所有子類都將擁有該方法及實現。

1、當繼承的父類和實現的接口中有相同簽名的方法時,優先使用父類的方法。

 2、當接口的父接口中也有同樣的默認方法時,就近原則調用子接口的方法。

 3、子類中的方法優先級最高

 4、當實現的多個接口中有相同簽名方法時,必須在實現類中通過重寫方法解決衝突問題,否則無法通過編譯,在重寫的方法中可以通過 接口名.super.方法名(); 的方式顯示調用需要的方法.

 5default方法不能重寫abstract方法,它只能重寫父類的default方法同時default方法不能具有和abstract方法相同的名稱。

抽象與接口設計上的區別:

1、抽象類是對類抽象,而接口是對行爲的抽象

2、抽象類所體現的是一種繼承關係,要想使得繼承關係合理,父類和派生類之間必須存在"is-a" 關係,即父類和派生類在概念本質上應該是相同的。對於接口則不然,並不要求接口的實現者和接口定義在概念本質上是一致的,僅僅是實現了接口定義的契約而已,接口所代表的是"like-a" 關係。

3、抽象類是自底向上抽象而來的,接口是自頂向下設計出來的。 

接口講解一:http://blog.csdn.net/wei_zhi/article/details/52738471

接口講解二:http://blog.csdn.net/wei_zhi/article/details/52743109

接口:http://blog.csdn.net/qq_26971305/article/details/54293526

接口中的默認方法(default)http://blog.csdn.net/travellersy/article/details/74537170

https://www.cnblogs.com/luozhiyun/p/7999705.html

抽象與接口:http://www.cnblogs.com/chenssy/p/3376708.html

Abstractinterface區別:https://blog.csdn.net/wei_zhi/article/details/52449970

四、繼承

繼承是面向對象最顯著的一個特徵。繼承是從已有的類中派生出新的類,新的類能吸收已有類的屬性和行爲,並能拓展新的能力。子類又稱爲派生類,父類有稱爲超類或基類。使用繼承可以有效實現代碼複用,避免重複代碼的出現。

1、子類即使不擴充父類,也能維持父類的操作。

2、子類實際上是將父類定義的更加具體的一種手段,父類表示的範圍大,子類表示的範圍小。

3、Java之中只允許多層繼承,不允許多重繼承,java存在單繼承侷限(只針對類,接口可以繼承多個接口)。

4、子類繼承時,只能繼承父類所有非私有的方法和屬性,對於構造器而言,只能被調用,不能被繼承。

5、在繼承關係之中,如果要實例化子類對象,會默認先調用父類構造,爲父類之中的屬性初始化,之後再調用子類構造,爲子類之中的屬性初始化。即:默認情況下,子類會找到父類之中的無參構造方法,若父類沒有無參構造,則子類必須通過super()調用指定參數的構造方法。

6、super調用父類構造時,一定放在構造方法的首行上。this也是在構造函數的第一行,不能與super同時出現。

7、super代表當前子類父類的引用。this代表對象的引用(誰調用就代表誰)

8、this.方法():先從本類查找是否存在指定的方法,如果沒有找到,則調用父類操作; super.方法():直接由子類調用父類之中的指定方法,不再找子類。

9、子類轉換成父類,在繼承關係上面是向上移動的,所以一般稱之爲向上轉型。

10、對於protected而言,它指明就類用戶而言,它是private,但是對於任何繼承與此類的子類而言或者其他任何未予同一個包的類而言,它卻是可以訪問的,父類可以通過protected方法來控制類的繼承者的訪問權限。

11、繼承是一種強耦合關係,父類變,子類必須變,所以謹慎使用繼承。

12、當一個類中的方法被覆寫後,如果實例化的是這個子類對象,則調用的方法就是被覆寫過的方法,但被子類所覆寫的方法不能擁有比父類更嚴格的訪問控制權限。

 

繼承詳解:http://blog.csdn.net/wei_zhi/article/details/52780026

繼承概念參考:http://www.cnblogs.com/chenssy/p/3354884.html

覆寫詳解:https://blog.csdn.net/wei_zhi/article/details/52780371

五、多重繼承

多重繼承指的是一個類可以同時從多於一個的父類那裏繼承行爲和特徵,然而我們知道java爲了保證數據安全,它只允許單繼承,所以我們可以通過接口和內部類實現多重繼承。

實現多重繼承:http://www.cnblogs.com/chenssy/p/3389027.html

Java多重繼承:https://www.cnblogs.com/haodawang/p/5967249.html

六、多態

多態基礎:http://www.cnblogs.com/chenssy/p/3372798.html

七、內部類

內部類的最大優點:可以方便的訪問外部類的私有操作,或者是由外部類方便的訪問內部類的私有操作。

內部類主要分爲:成員內部類、局部內部類、匿名內部類、靜態內部類。

內部類詳解:http://www.cnblogs.com/chenssy/p/3388487.html

匿名內部類詳解:http://www.cnblogs.com/chenssy/p/3390871.html

(作者地址:http://cmsblogs.com/

內部類詳解:http://blog.csdn.net/suifeng3051/article/details/51791812

內部類總結:https://www.cnblogs.com/hasse/p/5020519.html

四種內部類:http://blog.csdn.net/qq_33599978/article/details/70880803

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章