Java知识点汇总1
面向對象
“萬物皆對象”怎么理解?
面向過程:強調的是功能行為,以函數為最小單位,考慮怎么做;
面向對象:強調了具備了功能的對象,以類/對象為最小單位,考慮誰來做。
任何資源、變量等都可以看成是對象,每個對象都有自己的狀態特征和行為特征,即屬性和方法,面向對象思想是指在編程過程中,通過對象之間行為的交互來解決問題。
以類的形式組織代碼,以對象的形式封裝數據;
類與對象
類是很多個具有相同屬性和行為特征的對象所抽象出來的,對象是類的實例化;
總結:類是對象的抽象,對象是類的實例;
類的三大特征:
封裝性:隱藏對象內部的復雜性,只對外公開簡單的接口。便于外界調用,從而提高系統的可擴展性、可維護性。
實現:屬性的權限修改為private,并且創建getXxx()/setXxx()方法,用于調用private的屬性(一般是類的成員變量);
優點:
我們程序設計追求“高內聚,低耦合”。
①. 高內聚:類的內部數據操作細節自己完成,不允許外部干涉;
②. 低耦合:僅對外暴露少量的方法用于使用;
③. 更加安全;
繼承性 :子類可以繼承父類的屬性和方法,并能拓展新的屬性和方法;
特點:java中類具有單繼承性:一個類只能有一個直接父類,但一個類可以被多個子類繼承;
優點:
①. 減少了代碼的冗余,提高了代碼的復用性,從而提高軟件開發效率;
②. 便于功能擴展;
3.多態的前提;
tips: 一旦子類A繼承父類B之后,A就獲取了B中聲明的所有結構:屬性、方法;
注:父類中聲明為private的屬性或方法,子類繼承父類后,仍然認為獲取了父類中的私有結構
只是因為封裝性原因,使得子類不能直接調用父類的結構。
多態性(Polymorphism):父類或接口定義的引用變量可以指向子類/具體實現類的實現對象。
①. 子類繼承父類并重寫父類中已有的方法;
②. 父類引用指向子類對象,相同的引用調用同一個方法會根據子類對象的不同而表現出不同的行為;
③. 向上轉型;
①. 應用程序不必為每一個派生類編寫功能調用,只需對基類進行處理,提高代碼的復用性;
②. 父類引用可以調用不同子類的功能(向后兼容),提高了代碼的擴展性和可維護性;
編譯時多態 (方法的重載overload)
運行時多態(方法的重寫override)
Java引用變量有兩個類型:編譯時類型和運行時類型。編譯時類型由聲明該變量時使用的類型決定,運行時類型由實際賦給該變量的對象決定。
若編譯時類型和運行時類型不一致,就出現了對象的多態性。
總結:編譯看左邊(父類的引用),運行看右邊(子類的對象)
重載與重寫
重載:功能類似的方法,可以使用相同的方法名來定義不同功能的方法;在同一個類中,允許存在一 個以上的同名方法,只要它們的參數個數或者參數類型不同即可。
①. 與返回值類型無關,只看參數列表,且參數列表必須不同。(參數個數或參數類型)。
②. 調用時,根據方法參數列表的不同來區別。
JVM會根據參數類型、個數、順序等找到相對應的方法并運行;
重寫 : 子類繼承父類之后,可以對父類中同名同參數的方法,進行覆蓋操作;
權限修飾符 返回值類型 方法名(形參列表)throws 異常的類型{}:
①. 子類重寫的方法的方法名和形參列表與父類中被重寫的方法名和形參列表相同
②. 子類重寫的方法的權限修飾符>=父類被重寫方法的權限修飾符
特殊情況:子類不能重寫父類中private的方法;
①. 父類被重寫的方法的返回值類型void,子類也必須是void
②. 父類:A類(Object) 子類:A類/A類的子類(String)
③. 父類:基本數據類型(double) 子類:相同的基本數據類型(double)
tips:
子類和父類中的同名同參數的方法要么都static(不是重寫),要么都非static(考慮重寫)
static方法是隨著類的加載而加載的,不能被覆蓋/重寫
eg:
對于多態的調用:成員變量/靜態方法看左邊, 方法看右邊。
重載與重寫的區別:
1.從編譯和運行的角度看:
重載,是指允許存在多個同名方法,而這些方法的參數不同。編譯器根據方法不同的參數表,對同名方法的名稱做修飾。對于編譯器而言,這些同名方法就成了不同的方法。它們的調用地址在編譯期就綁定了。Java的重載是可以包括父類和子類的,即子類可以重載父類的同名不同參數的方法。
所以:對于重載而言,在方法調用之前,編譯器就已經確定了所要調用的方法,這稱為 “早綁定” 或 “靜態綁定”;
而對于多態,只有等到方法調用的那一刻,解釋運行器才會確定所要調用的具體方法,這稱為 “晚綁定” 或 “動態綁定”。
數組
二維數組
規定:二維數組分為外層數組的元素,內層數組的元素:
數組元素的默認初始化值
二維數組有兩種默認初始化:
針對于初始化方式一:int[][] arr = new int[4][3];
外層元素的初始化值為:地址值
內層元素的初始化值:與一維數組初始化情況相同
針對于初始化方式二:double[][] arr2 = new double[4][];
外層元素的初始化值為:null,指針指向的地址沒有值;
內層元素的初始化值:不能調用,否則空指針異常,指針沒有初始化值代表指針沒有指向任何東西,為空。
形參傳遞機制
方法的形參的傳遞機制:值傳遞;
匿名對象
this關鍵
使用情況
this調用屬性/方法
eg1:
eg2:
class Person{private int age;private String name;public void setName(String name){ //形參名和屬性名相同,會覆蓋成員變量// name = name; 就近原則this.name = name;} }this調用構造器
總結
以上是生活随笔為你收集整理的Java知识点汇总1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过JS和CSS,实现网页加载中的动画效
- 下一篇: 谭浩强C-结构体