java中的各種修飾符作用範圍
阿新 • • 發佈:2019-01-01
訪問修飾符:
- private
- 預設
- protected
-
public
作用範圍:
訪問修飾符\作用範圍 | 所在類 | 同一包內其他類 | 其他包內子類 | 其他包內非子類 |
---|---|---|---|---|
private | 可以訪問 | 不可以 | 不可以 | 不可以 |
預設 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
- private
被private修飾的屬性和方法,不能被其他類訪問,子類不能繼承也不能訪問。只能在所在類內部訪問。 - 預設
變數或者方法前沒有訪問修飾符時,可以被所在類訪問,可以被同一包內的其他類訪問 或者繼承。但是不能被其他包訪問。 - protected
被protected修飾的方法和屬性,在同一包內可被訪問和繼承。不同包內,子類可繼承,非子類不能訪問。 - public
方法和屬性前有public修飾,可以被任意包內的類訪問。
另外,類要想被其他包匯入,必須宣告為public。被public修飾的類,類名必須與檔名相同。
靜態修飾符的特點:
static是一個修飾符,用於修飾成員(成員變數和成員函式)
- 靜態成員隨著類的載入而載入。
- 靜態成員優先於物件存在。
- 靜態成員被所有物件所共享
- 靜態成員多了一箇中呼叫方式,可以被類名直接呼叫。
靜態使用的注意事項。
- 靜態方法只能訪問靜態成員, 非靜態方法既可以訪問靜態又可以訪問非靜態。
- 靜態方法中不可以定義this,super關鍵字。因為this代表是物件。而靜態存在時,有可能沒有物件。所以靜態方法執行時,this是沒有任何物件代表的。
簡單說,先進記憶體的資料不可以訪問後進記憶體的資料,可是後進記憶體資料可以訪問先進記憶體的資料。- 主函式是靜態的
靜態的優缺點
優點: 靜態成員多了一種呼叫方式。可以直接被類名呼叫 格式 :類名.靜態成員。也可以被物件呼叫。
弊端 : 靜態方法只能訪問靜態成員,出現了訪問侷限性。
靜態修飾的資料物件共享的資料,存放在方法區的靜態區中。
非靜態的資料,是每一個物件特有資料。存放在物件的所屬的堆記憶體中。
當成員變數被靜態修飾後,和非靜態成員變數的區別:
- 靜態變數也稱為類變數,也就是直接可以被類名呼叫的變數。這個變數是所屬於類的。
非靜態變數成為成員變數,或者例項變數,是被物件呼叫的,是所屬具體物件的。- 靜態變數隨著類的載入而載入,也意味著隨著類的消失而消失。生命週期最長。
例項變數,隨著物件的建立而載入,隨著物件的消失而消失。按照物件的生命週期而存在。- 靜態變數儲存在方法區的靜態區中。
例項變數存在於物件所屬的堆記憶體中。- 靜態變數資料,被所有物件所共享。
例項變數是物件中的特有資料