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的目的.
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