第八章 基于對象的編程
1.用要害字public定義的類必須存于與該類同名的文件中,并且文件擴展名為.java。在同一個文件中定義多于一個public類是語法錯誤。
2.java中定義一個類時總要繼續已有的類定義,最基本的繼續Object類。它是最基本的超類或叫基類,它有一個主要的方法toSting。假如一個類在定義時不顯試的使用要害字extends,這個類會隱試的繼續Object類。
3.一個類中通常帶有幾個構造函數,這是通過方法的重載實現的,構造函數也可以帶參數,但不能返回值。構造函數和其他方法的一個重要的差異是構造函數不答應返回值,void也不行。
4.java中的每一個類都是包的一部分,假如編程人員沒有為類指定包,類會自動的放到缺省的包中,它包含當前目錄下已編譯的類。
5.一個字符串與任意對象的鏈接會產生對該對象toString方法的隱試調用。如:“/nImplicit toString()call:”+t;
6.Java API中的每一個類和接口屬于一個特定的包,它包含一組相關聯的類和接口。包實際上是對類和接口進行組織的目錄結構。包提供了一種軟件復用的機制。
7.創建一個可以復用的類的步驟如下:
1)定義一個public類,假如類不是public,它只能被同一包中的其他類使用。
2)選擇一個包名,并把package語句加到可復用的類的源代碼文件中。
3)編譯這個類。這樣,它就被放到適當的包目錄結構中,以供編譯器和解釋器使用。
4)把這個可復用的類導入到需要用它的程序中?,F在就可以使用它了。
8.為使每個包有惟一的名字,Sun Microsystem公司提出了一個為包命名的約定,每個包名字由你所在的Internet的域名的逆序開始。如:com.deitel.jhtp3.ch08.Time1。
9.假如類中沒有定義構造函數,編譯器會自動創建一個不帶參數的缺省構造函數,也叫無參數構造函數。類的缺省構造函數將調用直接超類的缺省構造函數,并以缺省的方式初始化成員變量。
10.在定義類的方法或變量時,假如不為它們提供訪問權限修飾符,那么這些方法或變量被視為包訪問。
11.this引用被隱式地用于引用一個對象的實例變量和方法。另一個this引用的用法是實現“連接方法調用”,也叫“級連方法的調用”。如:t.setHour(18).setMinute(30).setSecond(22);
“.”運算符從左至右的結合,因此上述表達式首先計算t.setHour(18),然后此方法返回一個對象t的引用。又如:t.setTime(20,20,20).toString();
12.java執行自動的內存“垃圾收集”,將內存收回系統。當程序不再使用一個對象(即沒有對對象的引用)時,對象會被標識,以供垃圾收集。當“垃圾收集”執行時,這個對象所占的內存會被收回。因此,其他語言如C,C++,常見的內存浪費(因它不是自動回收的)不會發生在java中,讓而其他資源的浪費卻是可能的。
13.java的每個類都有一個finalizer方法,用于將資源返回給系統。在垃圾收集器回收一個對象的內存之前,該對象的finalizer方法一定會被調用。執行此對象的結束事務處理。類finalizer方法的名字是finalize,它不接受任何參數,也不返回任何值。一個類只能有一個finalize方法。finalize方法最初在Object類中定義,它是一個空的方法,什么也不做。但這樣保證了每個類都有一個finalize方法,以供垃圾收集器調用。
14.類的每個對象中都有類所有實例變量的一個拷貝,當只需要某個變量的一個拷貝供類的所有對象共享時,可以使用static類變量。static類變量只具有類作用域,public static類成員可以通過類的任一對象引用訪問,也可以用類名加點操作符(如Math.random())訪問。而PRivate static類成員只能通過類的方法訪問。
實際上,即使一個類對象都不存在,static類成員也會存在,執行時類被裝入內存后就有了它們。當不存在類對象是,想要訪問public static成員,只需在類成員前面加上類名和點操作符;而想要訪問private static類成員,則必須提供一個public方法,而且在方法調用時必須在方法名前加上類名和點操作符。
聲明為static的方法不能訪問非static類的成員,此外與非static方法不同,static方法并無this引用,因為static類變量和static類的方法的存在獨立與類的任何對象。并存在與類的任何對象被實例化之前。
15.實例分析
1)源代碼
//類Employee2的定義;
package Employee2;
新聞熱點
疑難解答