JAVA基礎知識精華總結
來源:互聯網
上載者:User
精華 1、 對象的初始化(1) 非靜態對象的初始化 在建立對象時,對象所在類的所有資料成員會首先進行初始化。 基本類型:int型,初始化為0。 如果為對象:這些對象會按順序初始化。 ※在所有類成員初始化完成之後,才調用本類的構造方法建立對象。 構造方法的作用就是初始化。 (2) 靜態對象的初始化 程式中主類的靜態變數會在main方法執行前初始化。 不僅第一次建立對象時,類中的所有靜態變數都初始化,並且第一次訪問某類(注意此時 未建立此類對象)的靜態對象時,所有的靜態變數也要按它們在類中的順序初始化。 2、 繼承時,對象的初始化過程 (1) 主類的超類由高到低按順序初始化靜態成員,無論靜態成員是否為private。 (2) 主類靜態成員的初始化。 (3) 主類的超類由高到低進行預設構造方法的調用。注意,在調用每一個超類的預設構造 方法前,先進行對此超類進行非靜態對象的初始化。 (4) 主類非靜態成員的初始化。 (5) 調用主類的構造方法。 3、 關於構造方法 (1) 類可以沒有構造方法,但如果有多個構造方法,就應該要有預設的構造方法,否則在繼承此類時,需要在子類中顯式調用父類的某一個非預設的構造方法了。 (2) 在一個構造方法中,只能調用一次其他的構造方法,並且調用構造方法的語句必須是 第一條語句。 4、 有關public、private和protected (1) 無public修飾的類,可以被其他類訪問的條件是:a.兩個類在同一檔案中,b.兩個類 在同一檔案夾中,c.兩個類在同一軟體包中。 (2) protected:繼承類和同一軟體包的類可訪問。 (3) 如果構造方法為private,那麼在其他類中不能建立該類的對象。 5、 抽象類別 (1) 抽象類別不能建立對象。 (2) 如果一個類中一個方法為抽象方法,則這個類必須為abstract抽象類別。 (3) 繼承抽象類別的類在類中必須實現抽象類別中的抽象方法。 (4) 抽象類別中可以有抽象方法,也可有非抽象方法。抽象方法不能為private。 (5) 間接繼承抽象類別的類可以不給出抽象方法的定義。 6、 final關鍵字 (1) 一個對象是常量,不代表不能轉變對象的成員,仍可以其成員進行操作。 (2) 常量在使用前必須賦值,但除了在聲明的同時初始化外,就只能在構造方法中初始化 。 (3) final修飾的方法不能被重設(在子類中不能出現同名方法)。 (4) 如果聲明一個類為final,則所有的方法均為final,無論其是否被final修飾,但資料 成員可為final也可不是。 7、 介面interface (用implements來實現介面) (1) 介面中的所有資料均為 static和final即靜態常量。儘管可以不用這兩個關鍵字修飾 ,但必須給常量賦初值。 (2) 介面中的方法均為public,在實現介面類中,實現方法必須可public關鍵字。 (3) 如果使用public來修飾介面,則介面必須與檔案名稱相同。 8、 多重繼承 (1) 一個類繼承了一個類和介面,那麼必須將類寫在前面,介面寫在後面,介面之間用逗 號分隔。 (2) 介面之間可多重繼承,注意使用關鍵字extends。 (3) 一個類雖只實現了一個介面,但不僅要實現這個介面的所有方法,還要實現這個介面 繼承的介面的方法,介面中的所有方法均須在類中實現。 9、 介面的嵌入 (1) 介面嵌入類中,可以使用private修飾。此時,介面只能在所在的類中實現,其他類不 能訪問。 (2) 嵌入介面中的介面一定要為public。 10、類的嵌入 (1) 類可以嵌入另一個類中,但不能嵌入介面中。 (2) 在靜態方法或其他方法中,不能直接建立內部類對象,需通過手段來取得。 手段有兩種: class A { class B {} B getB() { B b = new B(); return b; } } static void m() { A a = new A(); A.B ab = a.getB(); // 或者是 A.B ab = a.new B(); } (3) 一個類繼承了另一個類的內部類,因為超類是內部類,而內部類的構造方法不能自動 被調用,這樣就需要在子類的構造方法中明確的調用超類的構造方法。 接上例: class C extends A.B { C() { new A().super(); // 這一句就實現了對內部類構造方法的調用。 } } 構造方法也可這樣寫: C(A a) { a.super(); } // 使用這個構造方法建立對象,要寫成C c = new C(a); a是A的對象。 11、異常類 JAVA中除了RunTimeException 類,其他異常均須捕獲或拋出。