1. 程式人生 > >java類與物件基礎總結

java類與物件基礎總結

域有兩種型別:例項域(包括final例項域)和類域(也稱靜態域)

初始化資料域的3種方法:

a. 在構造器中設定值

b. 在宣告中賦值

c. 初始化塊

靜態常量的使用方法:類名.常量名  eg.獲得的方法:Math.PI

域與區域性變數的主要不同點:必須明確地初始化方法中的區域性變數。Java不對區域性變數進行初始化,但是會對物件的例項域進行初始化。

構造器

物件構造的幾種機制:

a. 過載

b. 預設域初始化

c. 無參構造器

d. 顯示域初始化(常量或呼叫方法)

e. 呼叫另一個構造器

f. 初始化塊

呼叫構造器的具體處理步驟:

a. 所有資料域被初始化為預設值(0falsefull

b. 按照在類宣告中出現的次序,依次執行所有域初始化語句和初始化塊

c. 如果構造器第一行呼叫了第二個構造器,則執行第二個構造器主體

d. 執行這個構造器的主體

不能在構造器中定義與例項域重名的區域性變數。

方法

方法的兩個引數:

a. 隱式引數,即方法名前的類物件

b. 顯式引數,即方法名後括號中的數值

this可表示隱參,用來將例項域和區域性變數明顯區別開。

靜態方法

靜態方法沒有隱參,即沒有this引數。

靜態方法的呼叫:

a. 類名.方法(方法可訪問自身靜態域)

b. 物件.方法(方法中的static被省略,呼叫結果與物件無關係)

使用靜態方法的兩種情況:

a. 不需要訪問物件狀態

b. 只訪問類的靜態域

方法引數的使用情況:

a. 一個方法不能修改一個基本資料型別的引數(即數值型和布林型)

b. 一個方法可以改變一個物件引數的狀態

c. 一個方法不能讓物件引數引用一個新的物件

繼承機制

子類對父類成員的可訪問特性:子類繼承父類的成員,但對父類成員的可訪問性卻由訪問特性控制。父類成員方法繼承至子類後,其待遇與子類相同修飾符修飾的成員方法一樣。

子類構造方法的定義與執行:呼叫父類構造方法所使用的superjava語言的關鍵字,用來表示直接父類的引用,由於Java的單繼承機制,所以super是個很明確的概念。

thissuper的聯絡與區別:關鍵字this有兩個用途:一是引用隱式引數,二是呼叫該類其他的構造器。同樣,

super關鍵字也有兩個用途:一是呼叫超類的方法,二是呼叫超類的構造器。在呼叫構造器的時候,使用方式很相似。呼叫構造器的語句只能作為另一個構造器的第一條語句出現。構造引數既可以傳遞給本類(this)的其他構造器,也可以傳遞給超類(super)的構造器。

多型

多型的最佳定義:一個物件可以指示多種實際型別的現象被稱為多型

動態繫結機制:呼叫的方法依賴於隱式引數的實際型別,並在執行時實現動態繫結。父類方法與覆蓋的子類方法可以有可協變得返回型別。動態繫結機制中的虛擬機器在繼承層次內呼叫方法,若沒有則沿繼承鏈向上尋找。

阻止繼承

final類的方法自動為final,而不包括域。

內聯:一個沒有被覆蓋並且很短的方法,編譯器可以對它進行優化處理。

強制型別轉換

進行強制型別轉換的原因:在暫時忽視物件的實際型別之後,使用物件的全部功能(可以理解為復原)

型別:型別描述了一個變數所引用的以及能夠引用的物件型別

註釋:將超類的引用賦給子類變數時,必須進行型別轉換,才能通過執行時的檢查,在繼承鏈上進行向下的型別轉換,並且“謊報”有關物件包含的內容,會產生異常。

抽象類

抽象類不能被例項化,但可以定義一個抽象類的物件變數,但是它只能引用非抽象子類的物件。

Object類

Object類為所有類的超類,object類提供3個服務,equals方法,hashCode方法,toString方法。子類可以覆蓋這3個方法。

equals方法:檢測一個物件是否等於另一個物件。Object:比較兩個物件是否具有相同的引用。子類可以定義為比較兩個物件狀態的相等

hashCode方法:由物件匯出的一個整型值。Object:匯出物件的儲存地址

toString方法:返回物件值得字串。Object:列印輸出物件所屬的類名和雜湊碼