1. 程式人生 > >public,private,protected修飾符作用範圍

public,private,protected修飾符作用範圍

訪問修飾符:private,預設,protected,public

作用範圍:

訪問修飾符/作用範圍 所在類 同一包內其他類 其他包內子類 其他包內非子類
private X X X
預設 X X
protected X
public


private :
            被private修飾的屬性和方法,不能被其他類訪問,子類不能繼承也不能訪問。只能在所在類內部訪問。
預設 :

           變數或者方法前沒有訪問修飾符時,可以被所在類訪問,可以被同一包內的其他類訪問 或者繼承。但是不能被其他包訪              問。
protected :
             被protected修飾的方法和屬性,在同一包內可被訪問和繼承。不同包內,子類可繼承,非子類不能訪問。
public :
             方法和屬性前有public修飾,可以被任意包內的類訪問。 
             另外,類要想被其他包匯入,必須宣告為public。被public修飾的類,類名必須與檔名相同。

靜態修飾符的特點:
static是一個修飾符,用於修飾成員(成員變數和成員函式)

靜態成員隨著類的載入而載入。
靜態成員優先於物件存在。
靜態成員被所有物件所共享
靜態成員多了一箇中呼叫方式,可以被類名直接呼叫。
靜態使用的注意事項。

靜態方法只能訪問靜態成員, 非靜態方法既可以訪問靜態又可以訪問非靜態。
靜態方法中不可以定義this,super關鍵字。因為this代表是物件。而靜態存在時,有可能沒有物件。所以靜態方法執行時,this是沒有任何物件代表的。 
簡單說,先進記憶體的資料不可以訪問後進記憶體的資料,可是後進記憶體資料可以訪問先進記憶體的資料。
主函式是靜態的
靜態的優缺點

優點: 靜態成員多了一種呼叫方式。可以直接被類名呼叫 格式 :類名.靜態成員。也可以被物件呼叫。 
弊端 : 靜態方法只能訪問靜態成員,出現了訪問侷限性。

靜態修飾的資料物件共享的資料,存放在方法區的靜態區中。 
非靜態的資料,是每一個物件特有資料。存放在物件的所屬的堆記憶體中。

當成員變數被靜態修飾後,和非靜態成員變數的區別:

靜態變數也稱為類變數,也就是直接可以被類名呼叫的變數。這個變數是所屬於類的。 
非靜態變數成為成員變數,或者例項變數,是被物件呼叫的,是所屬具體物件的。
靜態變數隨著類的載入而載入,也意味著隨著類的消失而消失。生命週期最長。 
例項變數,隨著物件的建立而載入,隨著物件的消失而消失。按照物件的生命週期而存在。
靜態變數儲存在方法區的靜態區中。 
例項變數存在於物件所屬的堆記憶體中。
靜態變數資料,被所有物件所共享。 
例項變數是物件中的特有資料