1. 程式人生 > >Java基礎15-final、static關鍵字和Object類

Java基礎15-final、static關鍵字和Object類

不同 擁有 bsp 指數 col main hashcode 技術分享 fin

一、final關鍵字

1.什麽是final關鍵字

繼承的出現提高了代碼的復用性,並方便開發。但隨之也有問題,有些類在描述完之後,不想被繼承,或者有些類中的部分方法功能是固定的,不想讓子類重寫。可是當子類繼承了這些特殊類之後,就可以對其中的方法進行重寫,那怎麽解決呢?

要解決上述的這些問題,需要使用到一個關鍵字finalfinal的意思為最終,不可變。final是個修飾符,它可以用來修飾類,類的成員,以及局部變量。

2.final的特點

①修飾類不可以被繼承,但可以繼承其他類

技術分享圖片

②final修飾的方法不可以被覆蓋,但父類中沒有被final修飾方法,子類覆蓋後可以加final。

技術分享圖片

③修飾的變量稱為常量,這些變量只能賦值一次。

技術分享圖片

④引用類型的變量值為對象地址值,地址值不能更改,但是地址內的對象屬性值可以修改。

技術分享圖片

修飾成員變量,需要在創建對象前賦值,否則報錯。(當沒有顯式賦值時,多個構造方法的均需要為其賦值。)

技術分享圖片技術分享圖片

二、static關鍵字

1.什麽是static

當在定義類的時候,類中都會有相應的屬性和方法。而屬性和方法都是通過創建本類對象調用的。當在調用對象的某個方法時,這個方法沒有訪問到對象的特有數據時,方法創建這個對象有些多余。可是不創建對象,方法又調用不了,這時就會想,那麽我們能不能不創建對象,就可以調用方法呢?

以上問題就可以通過static關鍵字來實現。static它是靜態修飾符,一般用來修飾類中的成員。

2.static的特點

static修飾的成員變量屬於類,不屬於這個類的某個對象。

技術分享圖片技術分享圖片

static修飾的成員可以並且建議通過類名直接訪問。

訪問靜態成員的格式:

類名.靜態成員變量名

類名.靜態成員方法名(參數)

技術分享圖片

註意:

靜態內容是優先於對象存在,只能訪問靜態,不能使用this/super。靜態修飾的內容存於靜態區。

技術分享圖片

同一個類中,靜態成員只能訪問靜態成員

這是因為,static修飾的方法和變量,屬於類,先進方法區,非靜態的變量在他們進方法區時還沒有產生。

main方法為靜態方法僅僅為程序執行入口,它不屬於任何一個對象,可以定義在任意類中。

3.靜態常量

上邊我們知道,final修飾的變量是常量

那final和static共同修飾的就是靜態常量了

定義格式:

public static final 數據類型 變量 = ;

技術分享圖片

當我們想使用類的靜態成員時,不需要創建對象,直接使用類名來訪問即可。

技術分享圖片

註意:

接口中的每個成員變量都默認使用public static final修飾。

所有接口中的成員變量已是靜態常量,由於接口沒有構造方法,所以必須顯示賦值。可以直接用接口名訪問。

interface Inter {
    public static final int COUNT = 100;
}

三、Object類

Object是java中所有類的根類,是祖宗級的。

1.Object為什麽是所有類的根類,到底什麽是Object類?

* object本身指對象的意思。我們發現所有的對象都具有某一些共同的行為,所以,我們抽象出一個類object對象類,其他都會繼承於object類,也擁有object類中的方法

* 引用數據類型:類/接口/數組,引用類型又稱為對象類,所謂數組的數組變量名稱,應該指數組對象。

2.Object類常見方法

* 1.protected void finalize():垃圾回收器再回首某一個對象之前,會調用該方法,做掃尾操作,該方法我們不要去調用
* 2.getclass(),返回當前對象的真實類型。在反射中用的多。
* 3.hashcode(),返回對象的哈希碼值,hashcode決定了對象在哈希表中的存儲位置。不同對象的hashcode是不一樣的

技術分享圖片技術分享圖片

* 4.equals(),拿當前對象(this)和參數obj作比較,

* 在object類中的equals方法,本身和==符號相同,都是比較對象的內存地址

技術分享圖片技術分享圖片

* 官方建議:每個類都應該覆蓋equals方法,不要比較內存地址,而失去比較我們關心的數據

技術分享圖片技術分享圖片技術分享圖片

* 5.toString():把一個對象轉換為字符串。
* 默認情況下打印對象,打印的是對象的十六進制的hashCode值

技術分享圖片技術分享圖片

* 官方建議我們:應該每個類都應該覆蓋toString返回我們關心的數據

技術分享圖片技術分享圖片技術分享圖片

Java基礎15-final、static關鍵字和Object類