一、類的定義
修飾符 class 類型 [extends 父類名]{
類型 成員變量1;
類型 成員變量2;
……
修飾符 類型 成員方法1{
類型 局部變量;
方法體
}
修飾符 類型 成員方法2{
類型 局部變量;
方法體
}
……
}
class前的修飾符可以有多個,用來限定所定義的類的使用方式。
二、創建一個對象
1.對象引用
類名 變量名;
2.對象實例化
變量名 = new 類名(參數列表);
3.對象使用
對象引用.成員數據
對象引用.成員方法(參數列表);
三、方法
1.定義一個抽象數據類型後,還需要爲這個類型的對象定義相應的操作,也就是方法。定義方法如下:
<修飾符><返回類型><名字>(<參數列表>)<塊>
2.Java只“按值”傳送自變量,即方法調用不會改變自變量的值。當對象實例作爲自變量傳送給方法時,自變量的值是方法的引用,也就是說,傳送給方法的是引用值。在方法內,這個引用值是不會被改變的,但可以修改該引用指向的對象內容。因此,當從方法中退出時,所修改的對象內容可以保留下來。
3.重載方法名
如果需要在同一個類中寫多個方法,讓他們對不同類型的變量進行相同的操作,就需要重載方法名。一個方法區別與另一個方法的要素有:方法名、參數列表及返回值,所以重載方法名只有靠參數列表來區分方法。
注意事項:1)調用語句的自變量列表必須足夠判明要調用的是哪個方法。2)即使方法的返回類型不同,重載方法的參數列表也必須不同,即參數個數或參數類型不同。
四、構造方法
在說明一個引用後,要調用new爲新對象分配空間,也就是要調用構造函數,也稱爲構造方法。它是生成實例對象的唯一方法。在調用new時,即可以帶有變量,也可以不帶變量,這要視具體的構造方法而定。
構造方法是特殊的類,有着特殊的功能。它的名字與類名稱相同,沒有返回值,在創建對象實例時由new運算符自動調用。同時爲了創建實例的方便,一個類可以有多個具有不同參數列表的構造方法,及構造方法可以重載。
因爲構造方法的特殊性,它不允許程序員按通常調用的方法的方式來調用,實際上它只用於生成實例時系統自動調用。
構造方法不能說明爲native、abstract、synchronized或final,也不能從父類繼承構造方法。
每個類都必須至少有一個構造方法,如果程序員沒有爲類定義構造方法,系統會自動爲該類生成一個默認的構造方法,其參數列表及方法體均爲空,所生成的對象的屬性值也爲0或空。
構造方法的特性總結如下:
1)構造方法的名字與類名相同。
2)沒有返回值類型。
3)必須爲所有的變量賦初值。
4)通常要說明爲public類型的,即公有的。
5)可以按需包含參數列表。
五、子類
實現了繼承,使用繼承這一面向對象的特性,可以支持軟件的可複用性,保證了代碼在類中間可共享,同時程序員可以節省編程時間。
1.extends關鍵字
面向對象的語言提供了派生機制,它允許程序員用以前已定義的類來定義一個新類。新類稱爲子類,原來的類稱作父類或超類。子類的定義格式如下:
public class Aextends B{
……
}
2.單重繼承
如果一個類有父類,則其父類只能有一個,Java只允許從一個類中擴展類,這條限制叫單重繼承。雖然一個子類可以從父類繼承所有的方法和成員變量,但它不能繼承構造方法。只有兩種方法可讓一個類得到一個構造方法:一種方法是自己編寫一個構造方法;另一種方法是,因爲用戶沒有寫構造方法,所以系統爲類提供唯一一個默認的構造方法。
六、方法重寫
重寫一個方法的目的,既可以是取代或修改原有方法,也可以是要在某些方面進行擴展,或者加以改進。一般的,子類重寫父類方法多發生在這三種情況下:子類要做父類不同的事情;在子類中取消這個方法;子類要做比父類更多的事情。
要注意的是,重寫的同名方法中。子類方法不能比父類方法的訪問權限更嚴格。
重寫的規則如下:
1)重寫方法允許訪問範圍不能小於原方法。
2)重寫方法所拋出的異常不能比原方法更多。
調用父類構造函數時,調用語句必須出現在子類構造方法中的第一行,採用super()方法進行調用。
七、靜態方法
如果需要在尚未創建一個對象實例的時候就去引用它的程序代碼,那麼標記上關鍵字static即可實現,該方法稱爲靜態方法。調用靜態方法時,前綴使用的是類名,而不是對象實例名,如果從當前類中的其他方法中調用,則不需要寫類名,可以直接寫方法名。
使用靜態方法時,有兩個特別的限制必須注意:
1)由於靜態方法可以在沒有定義它所從屬的類的對象的情況下加以調用,故不存在this值。因此,一個靜態方法只能使用其內部定義的參數或靜態變量。
2)靜態方法不能被重寫。
八、內部類
內部類具有以下幾個屬性:
1)類名只能在定義的範圍內被使用,內部類的名稱必須區別於外部類。
2)內部類可以使用外部類的類變量和實例變量,也可使用外部類的局部變量。
3)內部類可以定義爲abstract類型。
4)內部類也可以是一個接口,這個接口必須由另一個內部類來實現。
5)內部類可以被定義爲private或protected類型。當一個類中嵌套另一個類時,訪問保護並不妨礙內部類使用外部類的成員。
6)被定義爲static型的內部類將自動轉化爲頂層類,他們不能再使用局部範圍中或其他內部類的數據或變量。
7)內部類不能定義static型成員,而只有頂層類才能定義static型成員。如果內部類需要使用static型成員,這個成員必須在外部類中加以定義。
應用內部類的好處在於它是創建事件接收者的一個方便的方法。