多型 final關鍵字 static關鍵字

2021-10-09 02:55:01 字數 1700 閱讀 4165

1.什麼是多型性

* 同乙個動作與不同的物件產生不同的行為

* 多型:必須有繼承(不同的子類重寫父類方法後體現出來的形式不一樣)或者介面的實現

* 乙個物件的多種形態叫做多型

** 2.形成多型的必要條件:

* (1).繼承:存在子類和父類的關係

* (2).介面實現:定義乙個類實現對應的介面

* (3).重寫:子類重寫父類的方法

* (4).過載:呼叫相同的方法名,實現的功能不一樣

* (5).子類物件的多型性(重點):父類的引用指向子類的例項

** 3.程式分為兩種狀態,編譯狀態和執行狀態

* 當存在父類的引用指向子類的例項的時候,比如demo1繼承了demo,demo d = new demo1();

* 對於多型來說,編譯期間編譯時看左邊,定義物件的型別(demo)是什麼物件就是什麼型別

* 執行時看右邊,執行後也是子類重寫後的方法,物件也是重寫後的型別(demo1)

** 4.上轉型和下轉型

* 上轉型是將子類物件交給父類引用(子類轉型成父類,自動轉換)

* 下轉型是將父類轉換成子類,強制轉換

** 5.物件的多型性

* (1).父類的引用指向子類的例項

* (2).在編譯期間,呼叫的是父類的方法,指向的是父類,在執行期間執行的是子類的方法(編譯看左邊,執行看右邊)。

** instanceof:用於判斷型別是否匹配

** final關鍵字:

* 1.可以修飾類:這個類不能被被繼承,但是可以繼承其他的類

* 2.可以修飾方法:這個方法是乙個最終的方法,不能被重寫

* 3.修飾成員變數:乙個成員變數加上final關鍵字後沒有預設值了,且成員變數必須立刻賦值,賦值後不可被改變

* 4.修飾區域性變數:區域性變數的值不能發生更改,在定義時不用直接賦值,**

* static:

* 修飾成員變數,這個物件就不屬於這個物件,而是屬於類本身,我們可以「通過類名.屬性名」的方式去訪問

* 只要通過這個類建立的物件,這些物件就共享這個屬性

* 當其中乙個物件對類中的變數更改以後,其他物件的值也會隨之更改

* 類變數隨著類的載入而載入

* 類變數放在方法區的靜態域裡面,而不是放在堆裡面

* vs例項變數(非static變數,屬於物件型別),各個物件都各自有一套副本

* 在靜態方法裡面,只能載入靜態方法或靜態變數,,在普通方法裡面,可以呼叫靜態方法或靜態變數,因為靜態方法或者靜態變數載入時機

* 早於實際變數和實際方法的時機

** static方法還可以修飾**塊:

* **塊的作用:完成初始化

* 非靜態的**塊:

* 可以給類的屬性進行初始化操作,同時還可以呼叫類的方法(靜態的、非靜態的)

* 裡面可以有輸出語句

* 隨著物件的建立而載入,每建立完乙個物件,就載入一次**塊

** 靜態的**塊:static{}

* 裡面可以有輸出語句

* 隨著類的載入而載入,只會載入一次

* 靜態的只能載入靜態的,不能載入非靜態的

* 靜態**塊裡面只能呼叫類變數和類方法

* 作用在jdbc**

* 對屬性賦值:

* (1).預設初始化

* (2).顯示初始化

* (3).通過構造方法(set方法)進行初始化

* (4).初始化塊

*/

static關鍵字 final 關鍵字

特點 隨著類的載入而載入,也就是說靜態會隨著類的消失而消失,說明他的生命週期最長 靜態變數 static 關鍵字修飾成員變數,使用 類名.變數名 的形式來訪問,也可以使用 例項物件.變數名 的形式來訪問。靜態方法 static 關鍵字修飾成員函式,靜態方法可以使用 類名.方法名 的形式來訪問,也可以...

static關鍵字 final關鍵字

static關鍵字 靜態的 1,特點 可以修飾成員變數,成員方法 隨著類的載入而載入,優先於物件載入 只載入一次,就會一直存在,不再開闢新空間 全域性唯一,全域性共享 可以直接被類名呼叫 靜態只能呼叫靜態,非靜態可以隨意呼叫 總結 1,被static修飾後的特點 全域性共享 可以被類名直接呼叫 載入...

static 關鍵字 final關鍵字

一旦用了static 關鍵字,就不在屬於物件自己 而是屬於類。這個類裡的物件,都共享乙份。沒有static關鍵字那麼首先建立物件然後在通過物件才能使用它。靜態不能直接訪問非靜態 原因 在記憶體中是現有的靜態內容 後 有的非靜態內容 靜態方法中不能用this 原因this代表當前物件,通過誰呼叫的方法...