復用程式碼是Java 眾多引人注目的功能之一.但是想要成為機具革命性的語言,僅僅能複製程式碼並對之加以改變是不夠的,它還必須能夠做更多的事情.
組合語法
只要將物件參考置於新類別中即可.
初始化引用位置
定義物件的地方,他們總是能夠在建構器被呼叫之前初始化.
在類別的建構器中
就在要使用這些物件之前, --- 惰性初始化
實例初始化
繼承語法
除非已明確指出要從其他類別中繼承,否則就是在隱式的從java 的標準根類Object 進行繼承.
初始化基底類別
代理
##Java 語言不直接支援代理. 很多開發工具支持.在集合與繼承之間選擇
組合和繼承都允許在新的類別中放置子物件. 組合是顯式的做,繼承則是隱式的做.protected 關鍵字
就類別使用者而言,是private 的,對於任何繼承此類的導出類別或其他任何位於同一個包內的類別來說,他是可以存取的.向上轉型
you導出類別轉換為累積,在繼承圖上是向上移動的,成為向上轉型.向轉型是從一個較專用類型轉換到較通用型別,所以總是很安全. ##final 關鍵字無法改變
final 資料#一個既是static 優勢final 的領域只佔據一段不能改變的儲存空間.
對於基本型別,final 數值恆定不變.對於物件引用,final 使引用恆定不變.
一旦引用被初始化指向一個物件,就無法再把它改為指向另一個物件.然而物件本身是可以修改的.
Java 並未提供使任何物件恆定不變的途徑.
這一限制同樣適用數組,他也是物件.
#根據慣例,既是static 又是final 的域將用大寫表示,並適用下劃線分隔各個單字.
##空白final
所謂的空白final 是指被聲明為final 但又未給定初始值的域.##無論什麼情況,編譯器都確保空白final 在使用前必須被初始化.
##final 參數
允許在參數列表中以宣告的方式將參數指明為final.意味著你無法再方法中更改參數引用所指向的物件.final 方法
1.把方法鎖定,以防任何繼承類別修改它的含義.2.效率,在早期實現,如果將一個方法指明為final,就是同意編譯器將針對該方法的所有呼叫都會轉為內嵌呼叫.
final 和private 關鍵字
類別中所有的private 方法都是隱含地指定為final 的.由於無法採用private 方法,也就無法覆蓋它.
可以地private 方法添加final 修飾詞,但並不能給該方法增加任何額外的意義. #"覆蓋" 只有在某方法是基底類別的介面的一部分時才會出現.必須將一個物件向上轉型為她的基本類型並調用相同的方法.#final 類別
禁止被繼承,沒有子類別.所有final 類別中的所有方法,都隱含指定為final,無法覆寫.
初始化及類別的載入
class Insect { private int i = 9 ; protected int j ; Insect(){ System.out.println("Insect constructor."); System.out.println("i= "+i+", j="+j); j = 39 ; } static int printInit(String s){ System.out.println(s); return 47 ; } } public class Beetle extends Insect { private int k = printInit("Beetle.k initialized . "); public Beetle(){ System.out.println("k = "+ k); System.out.println("j = " + j); } private static int x2 = printInit("static Beetle.x2 initialized ") ; public static void main(String[] args) { System.out.println("Beetle constructor."); Beetle b = new Beetle(); } } 输出: static Beetle.x2 initialized Beetle constructor. Insect constructor. i= 9, j=0 Beetle.k initialized . k = 47 j = 39
以上是JAVA程式設計思想筆記 : 複用類的詳細內容。更多資訊請關注PHP中文網其他相關文章!