1. 程式人生 > >JAVA SE學習筆記03

JAVA SE學習筆記03

今天來說一下JAVA中的修飾符和類的加裁機制。
首先來說一下修飾符吧就說幾個面試常遇到的吧。
1、static修飾符:
static定義的是為整個類共有的一塊儲存區域。
1)當它修飾類的屬性時,這個屬性被稱為類變數,為一個類共享的變數,它屬於整個類。
可以直接通過類名來訪問它。
2)修飾方法稱為表態方法
可以直接通過類名來訪問本方法。
但要注意的是:在本方法中只能訪問其它的static成員,不能訪問非static成員。但是在非static方法即可以訪問非static的又可以訪問static的成員。在static方法中不能出現this關鍵字。在重寫上如果父類的方法是static的那麼在子類中不可以將其重寫為非static的。同樣如果父類的方法是非static的那麼在子類中也不可以將其重寫為static的。也就是static的方法可以被重寫,但是沒有多型。
3)用static來修飾一段程式碼稱為靜態程式碼塊
在這裡要注意的是(1)被修飾的程式碼塊是在類中的,而不是在方法中。
(2)靜態的程式碼塊只在類被加裁時執行一次,只後不會再被執行。
2、final修飾符:
1)修飾變數:叫作常量。修飾例項變數叫作例項常量。
(1)當修飾例項變數時,例項變數不會自動初始化為0。
(2)對於例項常量的賦值只有兩次機會,一次是在初始化屬性時,一次是呼叫構造方法時
(3)常和static、public配合來修飾一個例項常量
(4)修飾區域性變數稱為區域性常量,修飾靜態變數稱為靜態常量
(5)如果修飾方法那麼該方法不會被重寫。
(6)如果修飾類那麼該類不能被繼承。
3、abstract修飾符
1)修飾類被稱為抽象類,那麼該類不能被例項化但可以有構造方法,可以被繼承。可以大其它類中宣告一個該類的引用,只能做為編譯時型別,不能做為執行時型別。
2)可以修飾方法
要記住:abstract不能和private、static、final同時出現。
4)interface(介面)
1)在介面中所有的方法都是public abstract的。
2)在介面中所有屬性都是public static final的
3)介面可以實現多繼承,介面可以繼承介面
4)在介面中沒有構造方法,不能例項化,但可以宣告一個介面的引用
再來說一下類的載入機制
1、在虛擬機器的生命週期中一個類只被加裁一次
2、載入的原則是:延遲載入
3、類載入的時機
1)當第一次建立物件時要載入
2)呼叫static方法時要加裁,訪問static屬性時要加裁,呼叫static程式碼塊時要載入
3)當載入子類時會先加裁父類
4)建立物件引用時不加裁類
5)子類呼叫父類的static方法時會加裁
在這裡要注意的是:當子類沒有重寫父類的static方法時,只加裁父類不加裁子類。當子類重寫了父類的靜態方法時既加裁父類又加裁子類。
6)訪問static常量時,如果編譯器在以計算出常量的值可以不加裁類,否則會加裁。
7)用Class.forName(類名)來顯示的載入一個類