tij3筆記 006

•   
•    繼承語法
關鍵字extends
只要main是public,無論其所屬的類是否public,命令行均可調用該main方法。可以爲每個類都創建一個main方法。考慮:javac文件時每個類都會做成class文件,再java類文件時便可以調用該main方法。可以利用main方法實際地對類進行測試。

在導出類中修改了基類的方法,再調用基類該方法時則需引入super關鍵字。編譯器將強制初始化基類,對基類構造器的調用同樣需要super關鍵字。
構造器構建的過程是向外擴散的,基類在導出類構造器可以訪問它之前就已經完成了初始化。即使不爲導出類創建構造器,編譯器也會爲其合成一個缺省的構造器,而該構造器調用基類的構造器。

用關鍵字super顯式地編寫調用基類構造器(帶參)的語句並配以參數列表。
考慮:基類構造器帶參時,編譯器將強制程序員首先對基類構造器的調用置於導出類構造器中。
•    結合使用組合和繼承
•    在組合與繼承間選擇
組合與繼承都允許在新都立刻中放置自對象,組合是顯式地做,繼承是隱式地做。
組合技術用於想在新類中使用現有類的功能而非它的接口這種情形。即,在新類中嵌入某對象,讓其實現所需要的功能,新類的用戶看到的只是爲新類定義的接口,而非所嵌入對象的接口。爲取得此效果,需在新類中嵌入一個現有類的private對象。
將成員對象聲明爲pub,若成員對象自身隱藏具體實現,則這樣的做法是安全的。

繼承時則是在使用,並開發一個類的特殊版本。使用一個通用類,併爲了。某種特殊需要而將其特殊化。

考慮is-a與has-a的差別
•    protected關鍵字
在實際項目中,經常會想將某些事物儘可能地對這個世界隱藏起來,但仍允許導出類的成員訪問它們(僅對導出類開放)。此時需用protected關鍵字(protected同時提供包內訪問權限)。

最好的方法是保持字段爲private,通過protected方法來控制類繼承者的訪問權限。
•    增量開發
考慮繼承的優點:它支持增量開發。引入的新代碼不會爲現有(已存)的代碼中增添bug(將新的bug隔離在新的代碼之中)。
•    向上轉型
繼承最重要的方面是用來表現新類和基類之間的關係:新類是現有類的一種類型。
導出類是基類的一個超集,它可能比基類含有更多的方法,但必須至少含有基類所含有的方法。
總之而考慮:接受基類引用的方法同樣可以接受導出類的引用,這種將導出類引用轉換爲基類引用的動作,稱爲“向上轉型”。

由此再次引發對組合與繼承選擇的問題:一個清晰的判斷方法是考慮是否需要從新類向基類進行向上轉型,若是則需引入繼承。
•    final關鍵字
引入的兩個理由:設計或是效率。
三種情況:數據,方法和類。

final數據
(1)一個永不改變的“編譯時常量”。
在編譯而非執行時執行計算式,減輕執行時負擔。
(2)一個在運行時被初始化且不希望被改變的值。
特別地,當對對象的引用而非基本類型運用final時,其含義有所區別。對基本類型final將使其數值恆定,而對對象引用final使其引用恆定不變。一旦引用被初始化指向一個對象,就無法把它改爲指向另一對象,然而對象自身可以被修改(java未提供使任何對象恆定不變的途徑,該限制同樣適於數組)。
一個既final又static的字段(static final)只佔據一段不能改變的存儲空間。
編譯器對編譯時數值一視同仁。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章