java關鍵字,修飾符
this關鍵字:
代表當前物件的引用,this所在函式所屬物件的引用。
可以用於在建構函式中呼叫其他建構函式。(注意:只能定義在建構函式的第一行,因為初始化動作要先執行。)
super關鍵字:
- 代表父類儲存空間的標識。(可以理解為父類的引用,通過這個東西可以訪問父類的成員。)
- 子類的構造過程中必須呼叫其父類的構造方法。
- 如果子類的構造方法中沒有顯示呼叫父類的構造方法,則系統預設呼叫父親類的無參構造方法。
- 如果子類構造方法中既沒有顯示呼叫父類的構造方法,而父類又沒有無參的構造方法,則會編譯錯誤。
- 當然也可以自己使用super關鍵字呼叫父類的構造方法(只能寫在第一行,和this一樣)。
static關鍵字:
- static是一個修飾符,用於修飾成員,修飾的變是為靜態變數,或者類變數,
- static修飾的成員被所有的的物件所共享。
- static優先於物件存在,因為static修飾的成員隨著類的載入就已經存在了。
- static修飾的成員多了一種呼叫方式,可以直接被類名所呼叫。
- static修飾的資料是共享資料,物件中的儲存的是特有資料。
- 1.靜態:被static修飾的類的屬性或者方法,記憶體空間不會被例項化影響(不適用於區域性變數),一旦被改變,其他地方讀到的值,都是改變後的值,不建議使用例項名來訪問靜態的屬性和方法,直接使用類名訪問。
- 2.儘量減少使用靜態屬性和方法,特別是在多執行緒執行環境,堅決不允許。
- 3.初始化塊,無任何修飾{};每次例項化的時候就會產生。
final
- 1. final修飾的方法不可過載,過載。
- 2. final修的變數的值不可改變,也就是常量。
- 3. final修飾的類不可以被繼承。
- 4. final修飾區域性變數問題
-
- 修飾基本型別:基本型別的值不能發生改變。
- 修飾引用型別:引用型別的地址不能發生改變,但是,該物件的堆記憶體的成員變數值是可以改變的。
- final修飾的變數的初始化時:
-
- 被final修飾的變數只能賦值一次。
- 在構造方法完畢前。(非靜態的常量)
成員變數和靜態變數的區別?
1.兩個變數的生命週期不同。
-
- 成員變數隨著物件的建立而存在,隨著物件的被回收而釋放。
- 靜態變數隨著類的載入而存在,隨著類的消失而消失。(生命週期長)
2.呼叫方式不同。
-
- 成員變數只能被物件呼叫。
- 靜態變數可以被物件呼叫,還可以被類名呼叫。
3。別名不同:
-
- 成員變數也稱為例項變數。
- 靜態變數稱為類變數,
4.資料位置不同:
-
- 成員變數資料儲存在堆記憶體物件中,所以也叫做物件的特有資料。
- 靜態變數資料儲存在方法區(共享資料區)的靜態區,所以也叫物件共享資料。
靜態使用注意事項:
-
- 靜態方法只能訪問靜態成員。
- 靜態方法中不可以使用this或者super關鍵字。
- 主函式是靜態的。
Java 修飾符
修飾符:
許可權修飾符:public ,private,default,protected。
狀態修飾符:static , final。
抽象修飾符:abstract。
Java語言提供了很多修飾符,主要分為以下兩類:
訪問控制修飾符
Java中,可以使用訪問控制符來保護對類、變數、方法和構造方法的訪問。Java支援4種不同的訪問許可權。
· 預設的,也稱為 default,在同一包內可見,不使用任何修飾符。
· 私有的,以 private 修飾符指定,在同一類內可見。
· 共有的,以 public 修飾符指定,對所有類可見。(誰都可以訪問)
· 受保護的,以 protected 修飾符指定,對同一包內的類和所有子類可見。(受包保護)
被Static修飾的程式碼塊裡面的變數,是共用的,可以通過外界改變他們。
非訪問修飾符
為了實現一些其他的功能,Java 也提供了許多非訪問修飾符。
· static 修飾符,用來建立類方法和類變數。
· Final 修飾符,用來修飾類、方法和變數,final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變數為常量,是不可修改的。
· Abstract 修飾符,用來建立抽象類和抽象方法。
· Synchronized 和 volatile 修飾符,主要用於執行緒的程式設計。
類及其組成可以用的修飾符
類: 預設,public,final,abstract 我們自己定義:public居多
成員變數: 四種許可權修飾符均可,final,static 我們自己定義:private居多
構造方法: 四種許可權修飾符均可,其他不可 我們自己定義:public 居多
成員方法: 四種許可權修飾符均可,fianl,static,abstract 我們自己定義:public居多