一.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 靜態修飾的內容,在記憶體永遠只有乙個例項 在類例...