2006/10/13

Java基本觀念整理

1. import動作的存在理由是為namespaces的管理機制.

2. 每個檔案中並不強迫至少要有一個public class,但最多也只能有一個.

3. 若同時import兩個package,設兩個package都有同名class A,
當使用者使用A來產生物件時, complier會發出錯誤訊息,
強迫使用者指定完整名稱.

4. class不能是private或protected...只能是public或friendly,
但java並沒有friendly 這個access specifier, 當class前沒有宣告public時,
便預設為friendly(只有同package的class可使用).

5. inner class是上述的特例,它可以是private或protected.

6. 如果你不希望其它人取用你的class,可以將所有constructor宣告為private,
這麼一來便可阻止任何人產生其物件.
如果你不希望別人繼承你的class,可以加上final modifier.

7. static的method不能呼叫non-static的method,因為static載入記憶體的時間,
早於非non-static.

8. interface會自動將其member (包括data,function)設為public.
會自動將其data member 宣告成static final.

9. interface可宣告data member但必須是static final 且initailized.
int i = 5;
/*合法,因為如上述, java預設interface中的data member為static final modifier*/

10. inner class可存取其outer class的所有成員.
static inner class 便只能存取outer class 的static member.

11. class的前綴詞只有abstract,public,final

12. interface vs abstract class
當你的base class 不需要實作method, 且不帶任何data member時,
應優先考慮interfrace;反之,才使用abstract class.

13. 因為interface不具實作細目,不會有double duplication的問題,
所以interface可多重繼承base interface,達到擴充interface的目的.


14. abstract function功能類似 C++ 的pure virtual function, 但不能擁有function body.
只要class中有一個以上的abstract function, 該class就必須宣告為abstract, 並不得被實例化。
另外, 在java 的interface中, 所有的function都隱含是abstract.

15. 少用instanceof operator, 大多數情形可以用overriden method()解決.

No comments:

Post a Comment