一:static static: 靜態的. 1. 若須要一個類的多個對象共享一個變量,則該變量須要使用 static 修飾. 2. 由於 static 修飾的變量爲類的全部的實例所共享,因此 static 成員不屬於某個類的實例, 而屬於整個類. 因此在訪問權限容許的狀況下,可使用 "類名." 直接訪問靜態成員(成員包括屬性和方法). 3. 注意: 在靜態方法裏只能直接調用同類中其它的靜態成員(包括變量和方法),而不能直接訪問類中的非靜態成員. 這是由於,對於非靜態的方法和變量,須要先建立類的實例對象後纔可以使用,而靜態方法在使用前不用建立任何對象. 4. 同 3 的道理: 靜態方法不能以任何方式引用this和super關鍵字. 5. 非靜態方法中能夠直接來訪問類的靜態成員. 6. main() 方法是靜態的,所以JVM在執行main方法時不建立main方法所在的類的實例對象. 7. 靜態初始化指對類的靜態屬性進行初始化. 7.1 不該該在構造器中對靜態成員進行初始化: 由於靜態成員不因類的實例而改變. 7.2 1 //非靜態代碼塊: 先於構造器執行,每建立一個對象都會執行一次. 2 { 3 System.out.println("非靜態代碼塊"); 4 } 7.3 1 //靜態代碼塊: 使用 static 修飾的代碼塊 2 //在類被加載時執行一次,且執行一次. 能夠在靜態代碼塊中對靜態成員變量進行初始化. 3 //先於非靜態代碼塊和構造器執行. 4 static{ 5 System.out.println("靜態代碼塊"); 6 } 8. 所謂類的單態設計模式,就是採起必定的方法保證在整個的軟件系統中,對某個類只能存在一個對象實例. 8.1 不能再類的外部經過 new 關鍵字的方式建立新的實例: 構造器私有化. 8.2 在類的內部建立實例. 8.3 爲了讓類的外部可以訪問到類的內部建立的實例,該實例必須使用 static 修飾. 8.4 不能容許在類的外部修改內部建立的實例的引用. SingleInstance.instance = null; 須要把該屬性用 private 修飾. 8.5 爲了讓外部進行讀,添加對應的 get 方法. 設計模式
二:final安全
1. 在Java中聲明類、屬性和方法時,可以使用關鍵字final來修飾。 2. final標記的類不能被繼承.提升安全性,提升程序的可讀性。 3. final標記的成員變量必須在聲明的同時或在每一個構造方法中顯式賦值,不然編譯出錯。 4. final標記的變量(成員變量或局部變量)即成爲常量,只能賦值一次。 5. final標記的方法不能被子類重寫,增長安全性。this
三: 接口設計
抽象方法和常量的集合. 實際上接口更是一種規範! 1. 用 interface 來定義。 2. 接口中的全部成員變量都默認是由 public static final 修飾的.在聲明變量時必須直接賦值. 常量標識符的書寫要求: 字母都大寫,多個單詞使用 _ 鏈接. 3. 接口中的全部方法都默認是由public abstract修飾的.接口沒有構造方法. 4. 實現接口使用 implements 關鍵字.若一個類既實現接口,有繼承了父類, 須要把 extends 關鍵字放在前面, 即先繼承父類, 後實現多個接口.一個類能夠實現多個無關的接口;若實現多個接口,使用,分割. 5. 接口也能夠繼承另外一個接口,使用extends關鍵字.對象