跳到主要內容

發表文章

目前顯示的是 6月, 2011的文章

Java Interface 筆記

Interface存在的原因有二: 1.能夠向上轉型為多個型別 2.讓客戶端無法產生物件,確保"介面"的設計意義 如果使用的base class不帶任何函式定義式或任何成員變數 應優先選用Interface,其次才考慮abstract class 基本上在確定某些東西會成為base class,優先考量就是使他成為Interface 過度使用Interfaces會帶來額外的複雜度,必須確定有需求再使用 在類別實作多個Interface時 有不同的Interface間採用相同的method命名會導致出錯,應避免此情形 將Interfaces置於某個class中會形成巢狀的Interfaces 巢狀的Interfaces可以為private,意義是實作他的類別在外部不能向上轉型 而巢狀位於另一個Interface內時,那些Interfaces會自動成為public

Java使用多形時可能犯的錯誤

1.覆寫 private method import static net.mindview.util.Print.*; public class PrivateOverride{     private void f(){  print("private f()"); }     public static void main(String[] args){         privateOverride po = new Derived();         po.f();     } } class Derived extends PrivateOverride{     public void f(){  print("public f()"); } } //output:private f() private method會自動成為final,也會被derived class遮蔽 例子中的Derived的f()是新的method 2.fields及static methods 物件只有一般的method可以是多形 假如base class 與 derived class 有相同的data member derived class實際上包含了兩個同名的field,其中一個是繼承而來的 只是要呼叫base class的field就必須使用 super.field 的形式來取得 不過在實務上幾乎不會發生,將fields都宣告為private而不直接存取才是避免混淆的方法 static methos是伴隨著物件,而非個別的objects

Java基本型別資訊

Java在運作上還是會將基本型別轉換成物件 透過自動封箱(autoboxing)將基本型別轉換成外覆類別 Java在class的data member為基本型別時會給予預設值 但在區域變數則不成立並會引發錯誤 所以在建立基本型別的物件時最好還是給訂初始值 基本型別              大小           外覆類型            預設值 boolean                  -               Boolean              false char                    16-bit           Character           '\u0000'(null) byte              ...