三大修飾符詳細解釋。

2021-10-08 14:54:42 字數 3751 閱讀 4459

一.abstract 抽象的

1.方法

被abstract所修飾的方法 被稱為抽象方法

a)語法: abstract放置在方法的返回值型別之前 並且與訪問許可權修飾符順序無要求

抽象方法沒有方法的實現部分 連{}都沒有

public abstract double area();

public abstract double girth();

2.類

站在語法的角度:被 abstract所修飾的類被稱為抽象類

​ 站在使用的角度:只能被宣告 不能被例項化的類 被稱為抽象類

a)語法: abstract放置在class關鍵字之前 並且與訪問許可權修飾符順序無要求

abstract class 類名

b)特點:

1)抽象類可以被宣告

2)無法通過new的形式例項化物件

3)抽象類有構造方法 是在建立其子類時來使用

4)抽象類必須有子類才有意義

5)如果乙個抽象類的子類 沒有實現其所有的抽象方法 那麼這個子類也是個抽象類

6)抽象類中 可以有非抽象方法

e)好處: 強制多型

思考:1)有乙個類中有抽象方法 那這個類一定是抽象類嗎?

一定是2)乙個類中沒有抽象方法 這個類一定不是抽象類?

不一定 抽象類中不一定有抽象方法

二.static 靜態的

靜態屬性+靜態方法 統稱為 靜態成員

1.屬性:static 所修飾的屬性被稱為靜態屬性 也叫類變數

類變數:乙個類所擁有的變數 是類級別的 該類建立出的所有物件共有 有乙個物件改變了類變數 那麼所有物件使用類變數時均會受到影響

a)語法: 放置在屬性型別之前 並且與訪問許可權修飾符順序無要求

class myclass

b)呼叫語法:

1)通過物件.類變數

2)類名.類變數 推薦

2.方法:static 所修飾的方法被稱為靜態方法
a)語法:放置在返回值型別之前 並且與訪問許可權修飾符順序無要求

public static void m1()

b)呼叫語法:

1)通過物件.方法名()

2)類名.方法名()推薦

c)靜態方法的特點:

靜態方法內部可以用什麼:

1)靜態方法內部只允許使用靜態成員

2)靜態方法內部 不可以使用this與super關鍵字

靜態方法關於過載和覆蓋的語法:

1)靜態方法可以被過載 符合方法過載的所有語法要求

2)靜態方法可以被繼承 也可以被覆蓋 但是只能被static所修飾的方法覆蓋

3)靜態方法 不存在多型的情況 父類引用指向子類物件 子類中覆蓋了父類中的靜態方法,父類引用呼叫該方法時 依然是父類中未被覆蓋的方法

3.初始化**塊
a)語法:

b)定義位置:類以內 方法以外

c)作用:按照定義的先後順序 在建立物件的初始化階段 執行**塊中的** 一般用來給屬性賦值

4.靜態初始化**塊
被static修飾的**塊 被稱為靜態**塊

a)語法:

static

注意:靜態初始化**塊中 不可以使用非靜態成員

b)定義位置:類以內 方法以外

c)作用:按照定義的先後順序 在類載入時的初始化階段 執行**塊中的** 一般用來給靜態屬賦值 類載入只進行一次

5.類載入
a)類載入:jvm在第一次使用某個類時 會通過classpath所配的路徑 將該類所對應的.class檔案中類的相關資訊(屬性/方法/靜態成員/父類資訊...)讀取到jvm的記憶體中,並儲存起來。

載入:將.class中的資訊讀取到記憶體

驗證:驗證該.class是否是合法的.class檔案 驗證相應的訪問許可權修飾符

準備:給類變數分配空間 給類變數賦預設值 重要

解析:引用替換

初始化:給類變數進行初始化 執行初始化**或執行靜態初始化**塊中的** 重要

使用:在記憶體中使用類資訊

解除安裝:將儲存的類資訊**

c)類載入(進行到初始化階段的)觸發的時機: 重點

1)第一次建立物件時

2)第一次通過類名.靜態屬性/方法()的形式 呼叫靜態成員時

3)子類類載入時 其父類如果沒有被載入 則也會進行類載入

4) 備註:一般 稱類載入的時機 就是進行到初始化階段性的幾種情況 因為類載入觸發到初始化階段之前的情況過於複雜 所以不討論

類載入做的兩件事:給類變數進行空間分配賦預設值 給類變數進行初始化

6.當乙個類的物件第一次被建立時 需要掌握
1.類載入:

​ a)給父類 子類的類變數分配空間賦預設值

​ b)初始化父類的類變數

​ c)初始化子類的類變數

​2.物件的構建過程:

​ a)給父類 子類的所有屬性分配空間賦預設值

​ b)遞迴構建父類物件(重複c~d操作)

​ c)屬性初始化

​ d)執行構造方法中的內容

三.final 最終的

1.變數 final修飾的變數 被稱為常量

final所修飾的變數只能被賦值一次

a)區域性變數

修飾八種基本資料型別的變數:值不可變

修飾引用型別的時候:位址不可變

b)成員變數

修飾八種基本資料型別的變數:值不可變

修飾引用型別的時候:位址不可變

注意:a)final修飾得的成員變數 沒有預設值 必須保證在建立物件完成之前給其賦值(初始化階段/構造方法)

c)類變數

修飾八種基本資料型別的變數:值不可變

修飾引用型別的時候:位址不可變

注意:b)final修飾得的類變數 沒有預設值 必須保證類變數在類載入結束前被賦值(類載入初始化階段)

d)如果兩個變數都是final所修飾的 則二者進行運算時 a+b的結果會盡可能地轉換成型別c 從而編譯不會出錯

但當a+b的範圍大於型別c時 編譯出錯

final 型別a a = 10;

final 型別b b = 20;

型別c c = a+b;

2.方法 final修飾的方法 被稱為最終方法
final修飾的方法 可以被過載且與final無關

可以被繼承 但不可以被覆蓋

3.類 final修飾的類 被稱為最終類 也叫做斷子絕孫類
final修飾的類 所修飾的類不可以被繼承
四.小結

1.final static abstract均不可以修飾構造方法

2.一些修飾符不可聯用:

abstract 與 private  

​abstract 與 static

​abstract 與 final

3.匯入靜態資源 jdk1.5之後的新語法
import static 包名.類名.*;倒入該類所有的靜態成員

import static 包名.類名.方法名/屬性名;倒入該類指定的靜態成員

當匯入了靜態成員時 該靜態成員被使用時可以直接通過名字使用 不用加類名.

package classes;

import classes2.classa;

import static classes2.classa.m1;

public class teststatic4

}

C 中除過五大修飾符外的其他修飾符

作用 用作於例項新物件 用作於繼承中函式的隱藏 作用 static可以修飾類以及類成員 類中的全域性成員 static修飾類,則類中的成員也全部都是static 靜態類中不允許例項化 靜態類中的公開成員直接使用類名點進行訪問 非靜態類中的公開靜態成員通過類名點訪問,非靜態成員通過例項化物件點訪問 作...

修飾符在python函式中的用法詳細解釋

python修飾符是實現乙個函式巢狀的功能,比較以下兩個函式 coding utf 8 def a fn print a def d st print print st d st在這個函式中的生命週期已經結束 return fn def b fn print b return fn a b def ...

java基礎三 訪問修飾符

1 訪問修飾符的作用 1 確定資料成員和方法在其他類和物件中如何被使用 2 確定其他類如何使用和修改資料成員 2 常用的訪問修飾符 1 final 修飾類 其他類不能繼承 方法 不能被子類重寫 變數 不能被修改值,修飾的變數變成常量 2 static 靜態修飾的內容,在記憶體永遠只有乙個例項 在類例...